@revolut/ui-kit-miniapp 0.2.0 → 0.3.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.
Files changed (2) hide show
  1. package/package.json +6 -7
  2. package/types/index.d.ts +393 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revolut/ui-kit-miniapp",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "",
6
6
  "types": "types/index.d.ts",
@@ -18,14 +18,13 @@
18
18
  "sideEffects": [
19
19
  "*.css"
20
20
  ],
21
- "scripts": {
22
- "prebuild": "rimraf types",
23
- "prepublishOnly": "pnpm run build",
24
- "build": "mkdir -p types && cp ../ui-kit-miniapp/dist/index.d.ts ./types/index.d.ts"
25
- },
26
21
  "peerDependencies": {
27
22
  "react": "^19.0.0",
28
23
  "react-dom": "^19.0.0",
29
24
  "react-is": "^19.0.0"
25
+ },
26
+ "scripts": {
27
+ "prebuild": "rimraf types",
28
+ "build": "mkdir -p types && cp ../ui-kit-miniapp/dist/index.d.ts ./types/index.d.ts"
30
29
  }
31
- }
30
+ }
package/types/index.d.ts CHANGED
@@ -68,6 +68,7 @@ declare const DEFAULT_MESSAGES: {
68
68
  readonly 'action.open-menu': "Open menu";
69
69
  readonly 'action.open-filters': "Open filters";
70
70
  readonly 'label.apps': "Apps";
71
+ readonly 'label.all-apps': "All apps";
71
72
  readonly 'label.notifications': "Notifications";
72
73
  readonly 'label.accounts': "Accounts";
73
74
  readonly 'label.profile': "Profile";
@@ -109,6 +110,9 @@ declare const DEFAULT_MESSAGES: {
109
110
  readonly 'label.navigate-menu-item': "Navigate to menu item";
110
111
  readonly 'label.global-search-navigate': "Navigate";
111
112
  readonly 'label.global-search-select': "Go";
113
+ readonly 'label.card-locked': "Locked";
114
+ readonly 'label.card-pending': "Pending";
115
+ readonly 'label.card-terminated': "Terminated";
112
116
  };
113
117
  type IntlMessages = Record<keyof typeof DEFAULT_MESSAGES, string>;
114
118
 
@@ -2010,6 +2014,58 @@ interface ImageProps$1 extends Omit<BoxProps<'img'>, 'variant' | 'use'> {
2010
2014
  image?: ImageProp$1;
2011
2015
  }
2012
2016
 
2017
+ interface MapMarker$1<T = string> {
2018
+ id?: string;
2019
+ title: string;
2020
+ lat: number;
2021
+ lng: number;
2022
+ image?: string;
2023
+ description?: string;
2024
+ data?: T;
2025
+ }
2026
+ interface MapCenter$1 {
2027
+ lat: number;
2028
+ lng: number;
2029
+ }
2030
+ /**
2031
+ * Corner points rather than Google's `north`/`south`/`east`/`west` edges, so
2032
+ * each corner is ready to send as a single `<Latitude>,<Longitude>` pair.
2033
+ */
2034
+ interface MapBounds {
2035
+ southWest: MapCenter$1;
2036
+ northEast: MapCenter$1;
2037
+ }
2038
+ interface MapViewportEvent {
2039
+ center: MapCenter$1;
2040
+ zoom: number;
2041
+ bounds: MapBounds;
2042
+ }
2043
+ interface MapErrorEvent {
2044
+ message: string;
2045
+ }
2046
+ interface MapControls$1 {
2047
+ zoomControl?: boolean;
2048
+ mapTypeControl?: boolean;
2049
+ scaleControl?: boolean;
2050
+ streetViewControl?: boolean;
2051
+ rotateControl?: boolean;
2052
+ fullscreenControl?: boolean;
2053
+ gestureHandling?: 'auto' | 'cooperative' | 'greedy' | 'none';
2054
+ }
2055
+ declare const MapLoadingState$1: {
2056
+ readonly BUSY: "busy";
2057
+ readonly FAILED: "failed";
2058
+ readonly LOADING: "loading";
2059
+ readonly READY: "ready";
2060
+ };
2061
+ type MapLoadingState$1 = ValueOf<typeof MapLoadingState$1>;
2062
+
2063
+ declare const SliderVariant: {
2064
+ readonly SLIDER: "slider";
2065
+ readonly RANGE: "range";
2066
+ };
2067
+ type SliderVariant = ValueOf<typeof SliderVariant>;
2068
+
2013
2069
  declare const ToastTimeout: {
2014
2070
  readonly SHORT: "short";
2015
2071
  readonly LONG: "long";
@@ -4071,6 +4127,176 @@ interface ListProps {
4071
4127
  */
4072
4128
  declare const List: ({ items }: ListProps) => react_jsx_runtime.JSX.Element;
4073
4129
 
4130
+ /**
4131
+ * Marker to display on the map.
4132
+ */
4133
+ type MapMarker = MapMarker$1;
4134
+ /**
4135
+ * Map center coordinates.
4136
+ */
4137
+ type MapCenter = MapCenter$1;
4138
+ /**
4139
+ * Map loading state options.
4140
+ * - 'loading': initial script load (skeleton shown)
4141
+ * - 'busy': reloading results over an already-ready map
4142
+ * - 'failed': map failed to load (error state shown)
4143
+ * - 'ready': map is ready (default)
4144
+ */
4145
+ type MapLoadingState = MapLoadingState$1;
4146
+ /**
4147
+ * Map controls configuration.
4148
+ */
4149
+ type MapControls = MapControls$1;
4150
+ /**
4151
+ * Props for the Map component.
4152
+ *
4153
+ * @example
4154
+ * ```tsx
4155
+ * <Map apiKey="YOUR_API_KEY" center={{ lat: 51.5074, lng: -0.1278 }} />
4156
+ * ```
4157
+ */
4158
+ interface MapProps {
4159
+ /**
4160
+ * Google Maps API key (required).
4161
+ */
4162
+ apiKey: string;
4163
+ /**
4164
+ * Google Maps map ID.
4165
+ */
4166
+ mapId?: string;
4167
+ /**
4168
+ * Initial map center coordinates.
4169
+ * @default { lat: 51.5074, lng: -0.1278 }
4170
+ */
4171
+ center?: MapCenter;
4172
+ /**
4173
+ * Initial zoom level.
4174
+ * @default 11
4175
+ */
4176
+ zoom?: number;
4177
+ /**
4178
+ * Markers to display on the map.
4179
+ */
4180
+ markers?: MapMarker[];
4181
+ /**
4182
+ * Map UI controls configuration.
4183
+ */
4184
+ controls?: MapControls;
4185
+ /**
4186
+ * Loading state override.
4187
+ */
4188
+ loadingState?: MapLoadingState;
4189
+ /**
4190
+ * Label shown when the map fails to load.
4191
+ */
4192
+ labelFailedState?: React__default.ReactNode;
4193
+ /**
4194
+ * Label for the retry button shown on failure.
4195
+ */
4196
+ labelRetry?: React__default.ReactNode;
4197
+ /**
4198
+ * Callback fired when the user retries after a failure.
4199
+ */
4200
+ onRetry?: () => void;
4201
+ /**
4202
+ * Callback fired when the map errors.
4203
+ */
4204
+ onError?: (error: MapErrorEvent) => void;
4205
+ /**
4206
+ * Callback fired when the user finishes dragging the map.
4207
+ */
4208
+ onDragEnd?: (event: MapViewportEvent) => void;
4209
+ /**
4210
+ * Callback fired when the map zoom changes.
4211
+ */
4212
+ onZoom?: (event: MapViewportEvent) => void;
4213
+ /**
4214
+ * Custom marker renderer.
4215
+ */
4216
+ renderMarker?: (marker: MapMarker) => React__default.ReactNode;
4217
+ /**
4218
+ * Custom popup renderer shown when a marker is activated.
4219
+ */
4220
+ renderPopup?: (marker: MapMarker) => React__default.ReactNode;
4221
+ }
4222
+ /**
4223
+ * Map component for embedding an interactive Google Map.
4224
+ *
4225
+ * Renders a Google Map with optional markers, custom controls, and
4226
+ * custom marker/popup renderers. Requires a Google Maps API key.
4227
+ *
4228
+ * @example
4229
+ * ```tsx
4230
+ * import { Map } from '@revolut/ui-kit-miniapp'
4231
+ *
4232
+ * function BasicExample() {
4233
+ * return (
4234
+ * <Map
4235
+ * apiKey="YOUR_API_KEY"
4236
+ * center={{ lat: 51.5074, lng: -0.1278 }}
4237
+ * />
4238
+ * )
4239
+ * }
4240
+ * ```
4241
+ *
4242
+ * @example
4243
+ * ```tsx
4244
+ * import { Map } from '@revolut/ui-kit-miniapp'
4245
+ *
4246
+ * // With markers
4247
+ * function MarkersExample() {
4248
+ * return (
4249
+ * <Map
4250
+ * apiKey="YOUR_API_KEY"
4251
+ * center={{ lat: 51.5074, lng: -0.1278 }}
4252
+ * markers={[
4253
+ * { id: 'office', title: 'Revolut Office', lat: 51.5044, lng: -0.0204 },
4254
+ * ]}
4255
+ * />
4256
+ * )
4257
+ * }
4258
+ * ```
4259
+ *
4260
+ * @example
4261
+ * ```tsx
4262
+ * import { Map } from '@revolut/ui-kit-miniapp'
4263
+ *
4264
+ * // With viewport events
4265
+ * function ViewportExample() {
4266
+ * return (
4267
+ * <Map
4268
+ * apiKey="YOUR_API_KEY"
4269
+ * center={{ lat: 51.5074, lng: -0.1278 }}
4270
+ * onDragEnd={(event) => console.log('Center:', event.center)}
4271
+ * onZoom={(event) => console.log('Zoom:', event.zoom)}
4272
+ * />
4273
+ * )
4274
+ * }
4275
+ * ```
4276
+ *
4277
+ * @example
4278
+ * ```tsx
4279
+ * import { Map } from '@revolut/ui-kit-miniapp'
4280
+ *
4281
+ * // With custom controls
4282
+ * function ControlsExample() {
4283
+ * return (
4284
+ * <Map
4285
+ * apiKey="YOUR_API_KEY"
4286
+ * center={{ lat: 51.5074, lng: -0.1278 }}
4287
+ * controls={{
4288
+ * zoomControl: false,
4289
+ * fullscreenControl: false,
4290
+ * streetViewControl: false,
4291
+ * mapTypeControl: false,
4292
+ * }}
4293
+ * />
4294
+ * )
4295
+ * }
4296
+ * ```
4297
+ */
4298
+ declare const Map: ({ apiKey, mapId, center, zoom, markers, controls, loadingState, labelFailedState, labelRetry, onRetry, onError, onDragEnd, onZoom, renderMarker, renderPopup, }: MapProps) => react_jsx_runtime.JSX.Element;
4299
+
4074
4300
  /**
4075
4301
  * Props for the FilterButton component.
4076
4302
  *
@@ -4254,6 +4480,165 @@ interface SearchProps extends NativeInputProps$2 {
4254
4480
  */
4255
4481
  declare const Search: ({ value, defaultValue, onChange, placeholder, labelButtonClear, disabled, readOnly, invalid, ...rest }: SearchProps) => react_jsx_runtime.JSX.Element;
4256
4482
 
4483
+ interface SliderBaseProps extends Omit<NativeDivProps, 'onChange' | 'value' | 'defaultValue' | 'variant'> {
4484
+ /**
4485
+ * Minimum allowed value.
4486
+ * @default 0
4487
+ */
4488
+ min?: number;
4489
+ /**
4490
+ * Maximum allowed value.
4491
+ * @default 1
4492
+ */
4493
+ max?: number;
4494
+ /**
4495
+ * Step between allowed values.
4496
+ * @default 0.01
4497
+ */
4498
+ step?: number;
4499
+ /**
4500
+ * Whether the slider is disabled.
4501
+ * @default false
4502
+ */
4503
+ disabled?: boolean;
4504
+ /**
4505
+ * Accessible label for the maximum handle.
4506
+ */
4507
+ labelMax?: string;
4508
+ /**
4509
+ * Accessible label for the minimum handle.
4510
+ */
4511
+ labelMin?: string;
4512
+ /**
4513
+ * Whether to show a tooltip with the current value while interacting.
4514
+ * @default false
4515
+ */
4516
+ showTooltip?: boolean;
4517
+ }
4518
+ /**
4519
+ * Props for the single-value Slider variant.
4520
+ */
4521
+ interface SingleSliderProps extends SliderBaseProps {
4522
+ variant: typeof SliderVariant.SLIDER;
4523
+ /**
4524
+ * Controlled value.
4525
+ */
4526
+ value?: number;
4527
+ /**
4528
+ * Default value for uncontrolled usage.
4529
+ */
4530
+ defaultValue?: number;
4531
+ /**
4532
+ * Callback fired continuously while the value changes.
4533
+ */
4534
+ onChange?: (value: number) => void;
4535
+ /**
4536
+ * Callback fired once when the user finishes changing the value.
4537
+ */
4538
+ onChangeEnd?: (value: number) => void;
4539
+ /**
4540
+ * Positions to mark and snap to on the track. Values at the `min` and `max`
4541
+ * edges are ignored. Only supported on the single (non-range) variant.
4542
+ */
4543
+ checkpoints?: number[];
4544
+ }
4545
+ /**
4546
+ * Props for the range Slider variant.
4547
+ */
4548
+ interface RangeSliderProps extends SliderBaseProps {
4549
+ variant: typeof SliderVariant.RANGE;
4550
+ /**
4551
+ * Controlled [min, max] values.
4552
+ */
4553
+ value?: [number, number];
4554
+ /**
4555
+ * Default [min, max] values for uncontrolled usage.
4556
+ */
4557
+ defaultValue?: [number, number];
4558
+ /**
4559
+ * Callback fired continuously while the values change.
4560
+ */
4561
+ onChange?: (value: [number, number]) => void;
4562
+ /**
4563
+ * Callback fired once when the user finishes changing the values.
4564
+ */
4565
+ onChangeEnd?: (value: [number, number]) => void;
4566
+ }
4567
+ /**
4568
+ * Props for the Slider component.
4569
+ */
4570
+ type SliderProps = SingleSliderProps | RangeSliderProps;
4571
+ /**
4572
+ * Slider component for picking a single numeric value or a min–max range.
4573
+ *
4574
+ * Use sliders for approximate adjustments where dragging is faster than typing an exact number.
4575
+ *
4576
+ * @example
4577
+ * ```tsx
4578
+ * import { Slider } from '@revolut/ui-kit-miniapp'
4579
+ *
4580
+ * // Uncontrolled single value
4581
+ * function SingleExample() {
4582
+ * return (
4583
+ * <Slider
4584
+ * defaultValue={0.5}
4585
+ * min={0}
4586
+ * max={1}
4587
+ * onChange={(value) => console.log('Value:', value)}
4588
+ * />
4589
+ * )
4590
+ * }
4591
+ * ```
4592
+ *
4593
+ * @example
4594
+ * ```tsx
4595
+ * import { Slider } from '@revolut/ui-kit-miniapp'
4596
+ * import { useState } from 'react'
4597
+ *
4598
+ * // Controlled range
4599
+ * function RangeExample() {
4600
+ * const [value, setValue] = useState<[number, number]>([0.25, 0.75])
4601
+ *
4602
+ * return (
4603
+ * <Slider
4604
+ * variant="range"
4605
+ * value={value}
4606
+ * onChange={setValue}
4607
+ * labelMin="Minimum"
4608
+ * labelMax="Maximum"
4609
+ * />
4610
+ * )
4611
+ * }
4612
+ * ```
4613
+ *
4614
+ * @example
4615
+ * ```tsx
4616
+ * import { Slider } from '@revolut/ui-kit-miniapp'
4617
+ *
4618
+ * // With checkpoints and tooltip
4619
+ * function CheckpointsExample() {
4620
+ * return (
4621
+ * <Slider
4622
+ * defaultValue={0.5}
4623
+ * checkpoints={[0.25, 0.5, 0.75]}
4624
+ * showTooltip
4625
+ * />
4626
+ * )
4627
+ * }
4628
+ * ```
4629
+ *
4630
+ * @example
4631
+ * ```tsx
4632
+ * import { Slider } from '@revolut/ui-kit-miniapp'
4633
+ *
4634
+ * // Disabled state
4635
+ * function DisabledExample() {
4636
+ * return <Slider disabled defaultValue={0.4} />
4637
+ * }
4638
+ * ```
4639
+ */
4640
+ declare const Slider: (props: SliderProps) => react_jsx_runtime.JSX.Element;
4641
+
4257
4642
  /**
4258
4643
  * Props for the HStack component.
4259
4644
  *
@@ -4799,6 +5184,10 @@ interface StarRatingProps {
4799
5184
  * Whether it is read only.
4800
5185
  */
4801
5186
  readOnly?: boolean;
5187
+ /**
5188
+ * Size of the Stars.
5189
+ */
5190
+ size?: number;
4802
5191
  /**
4803
5192
  * Amount of StarRating selected.
4804
5193
  */
@@ -4814,7 +5203,7 @@ interface StarRatingProps {
4814
5203
  * // Read only usage
4815
5204
  * function ReadOnlyExample() {
4816
5205
  * return (
4817
- * <StarRating color="accent" value={4} readOnly />
5206
+ * <StarRating color="accent" value={4} size={32} readOnly />
4818
5207
  * )
4819
5208
  * }
4820
5209
  * ```
@@ -4833,7 +5222,7 @@ interface StarRatingProps {
4833
5222
  * }
4834
5223
  * ```
4835
5224
  */
4836
- declare const StarRating: ({ color, onChange, readOnly, value, }: StarRatingProps) => react_jsx_runtime.JSX.Element;
5225
+ declare const StarRating: ({ color, onChange, readOnly, size, value, }: StarRatingProps) => react_jsx_runtime.JSX.Element;
4837
5226
 
4838
5227
  /**
4839
5228
  * Subheader variant options.
@@ -6269,5 +6658,5 @@ declare const Token: {
6269
6658
  };
6270
6659
  };
6271
6660
 
6272
- export { Action, ActionButton, Avatar, Badge, BottomSheet, Button, Calendar, Cell, CellSkeleton, Checkbox, CompactInput, Copyable, DetailsCell, Dropdown, FilterButton, Footnote, Group, HStack, Icon, Image, Input, Link, List, MessageBubble, Page, Placeholder, Popup, ProgressSteps, Radio, RootProvider, Search, Spacer, StarRating, Subheader, Switch, TabBar, Text, TextArea, Toast, ToggleButton, Token, VStack, VisuallyHidden, copyToClipboard, nodeChain, useDateFormat, useDateRangeFormat, useDateTimeFormat, useDropdown, useIsRTL, useMoneyFormat, useStatusSheet, useTimeFormat, useToast };
6273
- export type { ActionButtonProps, ActionButtonVariant, ActionProps, AvatarProps, AvatarSize, BadgeProps, BottomSheetActionsProps, BottomSheetContentProps, BottomSheetHeaderProps, BottomSheetProps, ButtonProps, ButtonVariant, CalendarDateProps, CalendarDisabledDays, CalendarProps, CalendarRangeProps, CalendarVariant, CellProps, CellVariant, CheckboxProps, CompactInputProps, CopyableProps, CurrencyDefinition, DateFormatOptions, DateRangeFormatOptions, DateTimeFormatOptions, DetailsCellProps, DropdownOptions, DropdownProps, DropdownState, FilterButtonProps, FootnoteProps, GroupProps, GroupVariant, HStackProps, IconName, IconProps, ImageFit, ImageProp, ImageProps, InputProps, InputType, IntlMessages, LinkProps, ListProps, MessageBubbleProps, PageHeaderProps, PageMainProps, PageProps, PageTabsProps, PlaceholderProps, PopupProps, ProgressStepsProps, RadioProps, RootProviderProps, SearchProps, Space, SpacerProps, StackAlignment, StarRatingProps, StatusSheetAction, StatusSheetInstance, StatusSheetOptions, StatusSheetVariant, SubheaderProps, SubheaderVariant, SwitchProps, TabBarItem, TabBarProps, TabBarVariant, TextAreaProps, TextProps, TextVariant, ThemeBackground, ThemeMode, TimeFormatOptions, ToastActions, ToastProps, ToggleButtonProps, UseMoneyFormatOptions, VStackProps, VisuallyHiddenProps };
6661
+ export { Action, ActionButton, Avatar, Badge, BottomSheet, Button, Calendar, Cell, CellSkeleton, Checkbox, CompactInput, Copyable, DetailsCell, Dropdown, FilterButton, Footnote, Group, HStack, Icon, Image, Input, Link, List, Map, MessageBubble, Page, Placeholder, Popup, ProgressSteps, Radio, RootProvider, Search, Slider, SliderVariant, Spacer, StarRating, Subheader, Switch, TabBar, Text, TextArea, Toast, ToggleButton, Token, VStack, VisuallyHidden, copyToClipboard, nodeChain, useDateFormat, useDateRangeFormat, useDateTimeFormat, useDropdown, useIsRTL, useMoneyFormat, useStatusSheet, useTimeFormat, useToast };
6662
+ export type { ActionButtonProps, ActionButtonVariant, ActionProps, AvatarProps, AvatarSize, BadgeProps, BottomSheetActionsProps, BottomSheetContentProps, BottomSheetHeaderProps, BottomSheetProps, ButtonProps, ButtonVariant, CalendarDateProps, CalendarDisabledDays, CalendarProps, CalendarRangeProps, CalendarVariant, CellProps, CellVariant, CheckboxProps, CompactInputProps, CopyableProps, CurrencyDefinition, DateFormatOptions, DateRangeFormatOptions, DateTimeFormatOptions, DetailsCellProps, DropdownOptions, DropdownProps, DropdownState, FilterButtonProps, FootnoteProps, GroupProps, GroupVariant, HStackProps, IconName, IconProps, ImageFit, ImageProp, ImageProps, InputProps, InputType, IntlMessages, LinkProps, ListProps, MapCenter, MapControls, MapLoadingState, MapMarker, MapProps, MessageBubbleProps, PageHeaderProps, PageMainProps, PageProps, PageTabsProps, PlaceholderProps, PopupProps, ProgressStepsProps, RadioProps, RangeSliderProps, RootProviderProps, SearchProps, SingleSliderProps, SliderProps, Space, SpacerProps, StackAlignment, StarRatingProps, StatusSheetAction, StatusSheetInstance, StatusSheetOptions, StatusSheetVariant, SubheaderProps, SubheaderVariant, SwitchProps, TabBarItem, TabBarProps, TabBarVariant, TextAreaProps, TextProps, TextVariant, ThemeBackground, ThemeMode, TimeFormatOptions, ToastActions, ToastProps, ToggleButtonProps, UseMoneyFormatOptions, VStackProps, VisuallyHiddenProps };