@butternutbox/pawprint-native 0.0.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.
Files changed (105) hide show
  1. package/.turbo/turbo-build.log +30 -0
  2. package/COMPONENT_GUIDELINES.md +610 -0
  3. package/README.md +72 -0
  4. package/dist/ibm-plex-sans-condensed-400-normal-I2XLJNNB.woff2 +0 -0
  5. package/dist/ibm-plex-sans-condensed-500-normal-IEQBNVGX.woff2 +0 -0
  6. package/dist/ibm-plex-sans-condensed-600-normal-UX5ZU5T6.woff2 +0 -0
  7. package/dist/ibm-plex-sans-condensed-700-normal-4PFYFTSO.woff2 +0 -0
  8. package/dist/ida-narrow-500-normal-C6I2PK4T.woff2 +0 -0
  9. package/dist/ida-narrow-700-normal-UPHPRIN6.woff2 +0 -0
  10. package/dist/index.cjs +2686 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.d.cts +780 -0
  13. package/dist/index.d.ts +780 -0
  14. package/dist/index.js +2617 -0
  15. package/dist/index.js.map +1 -0
  16. package/eslint.config.js +3 -0
  17. package/llms.txt +458 -0
  18. package/package.json +57 -0
  19. package/src/components/atoms/Avatar/Avatar.stories.tsx +125 -0
  20. package/src/components/atoms/Avatar/Avatar.tsx +159 -0
  21. package/src/components/atoms/Avatar/index.ts +7 -0
  22. package/src/components/atoms/Badge/Badge.stories.tsx +231 -0
  23. package/src/components/atoms/Badge/Badge.tsx +184 -0
  24. package/src/components/atoms/Badge/index.ts +2 -0
  25. package/src/components/atoms/Button/Button.stories.tsx +145 -0
  26. package/src/components/atoms/Button/Button.tsx +261 -0
  27. package/src/components/atoms/Button/index.ts +7 -0
  28. package/src/components/atoms/Hint/Hint.stories.tsx +84 -0
  29. package/src/components/atoms/Hint/Hint.tsx +59 -0
  30. package/src/components/atoms/Hint/index.ts +2 -0
  31. package/src/components/atoms/Icon/Icon.stories.tsx +200 -0
  32. package/src/components/atoms/Icon/Icon.tsx +112 -0
  33. package/src/components/atoms/Icon/index.ts +8 -0
  34. package/src/components/atoms/IconButton/IconButton.stories.tsx +162 -0
  35. package/src/components/atoms/IconButton/IconButton.tsx +227 -0
  36. package/src/components/atoms/IconButton/index.ts +7 -0
  37. package/src/components/atoms/Illustration/Illustration.stories.tsx +167 -0
  38. package/src/components/atoms/Illustration/Illustration.tsx +81 -0
  39. package/src/components/atoms/Illustration/index.ts +6 -0
  40. package/src/components/atoms/Input/Input.stories.tsx +142 -0
  41. package/src/components/atoms/Input/Input.tsx +110 -0
  42. package/src/components/atoms/Input/InputDescription.tsx +49 -0
  43. package/src/components/atoms/Input/InputError.tsx +39 -0
  44. package/src/components/atoms/Input/InputField.tsx +119 -0
  45. package/src/components/atoms/Input/InputLabel.tsx +61 -0
  46. package/src/components/atoms/Input/index.ts +10 -0
  47. package/src/components/atoms/Link/Link.stories.tsx +119 -0
  48. package/src/components/atoms/Link/Link.tsx +118 -0
  49. package/src/components/atoms/Link/index.ts +2 -0
  50. package/src/components/atoms/Logo/Logo.registry.ts +39 -0
  51. package/src/components/atoms/Logo/Logo.tsx +68 -0
  52. package/src/components/atoms/Logo/index.ts +4 -0
  53. package/src/components/atoms/Spinner/Spinner.stories.tsx +98 -0
  54. package/src/components/atoms/Spinner/Spinner.tsx +91 -0
  55. package/src/components/atoms/Spinner/index.ts +2 -0
  56. package/src/components/atoms/Switch/Switch.stories.tsx +120 -0
  57. package/src/components/atoms/Switch/Switch.tsx +196 -0
  58. package/src/components/atoms/Switch/index.ts +2 -0
  59. package/src/components/atoms/Tag/Tag.stories.tsx +89 -0
  60. package/src/components/atoms/Tag/Tag.tsx +122 -0
  61. package/src/components/atoms/Tag/index.ts +2 -0
  62. package/src/components/atoms/Typography/Typography.stories.tsx +315 -0
  63. package/src/components/atoms/Typography/Typography.tsx +284 -0
  64. package/src/components/atoms/Typography/index.ts +2 -0
  65. package/src/components/atoms/index.ts +14 -0
  66. package/src/components/index.ts +2 -0
  67. package/src/components/molecules/ButtonDock/ButtonDock.stories.tsx +95 -0
  68. package/src/components/molecules/ButtonDock/ButtonDock.tsx +148 -0
  69. package/src/components/molecules/ButtonDock/index.ts +2 -0
  70. package/src/components/molecules/ButtonGroup/ButtonGroup.stories.tsx +82 -0
  71. package/src/components/molecules/ButtonGroup/ButtonGroup.tsx +94 -0
  72. package/src/components/molecules/ButtonGroup/index.ts +2 -0
  73. package/src/components/molecules/Checkbox/Checkbox.stories.tsx +148 -0
  74. package/src/components/molecules/Checkbox/Checkbox.tsx +279 -0
  75. package/src/components/molecules/Checkbox/CheckboxGroup.tsx +53 -0
  76. package/src/components/molecules/Checkbox/index.ts +4 -0
  77. package/src/components/molecules/Radio/Radio.stories.tsx +182 -0
  78. package/src/components/molecules/Radio/Radio.tsx +249 -0
  79. package/src/components/molecules/Radio/RadioGroup.tsx +142 -0
  80. package/src/components/molecules/Radio/index.ts +4 -0
  81. package/src/components/molecules/SegmentedControl/SegmentedControl.stories.tsx +151 -0
  82. package/src/components/molecules/SegmentedControl/SegmentedControl.tsx +323 -0
  83. package/src/components/molecules/SegmentedControl/index.ts +5 -0
  84. package/src/components/molecules/Slider/Slider.stories.tsx +144 -0
  85. package/src/components/molecules/Slider/Slider.tsx +303 -0
  86. package/src/components/molecules/Slider/index.ts +2 -0
  87. package/src/components/molecules/index.ts +6 -0
  88. package/src/fonts/ibm-plex-sans-condensed-400-normal.woff2 +0 -0
  89. package/src/fonts/ibm-plex-sans-condensed-500-normal.woff2 +0 -0
  90. package/src/fonts/ibm-plex-sans-condensed-600-normal.woff2 +0 -0
  91. package/src/fonts/ibm-plex-sans-condensed-700-normal.woff2 +0 -0
  92. package/src/fonts/ida-narrow-500-normal.woff2 +0 -0
  93. package/src/fonts/ida-narrow-700-normal.woff2 +0 -0
  94. package/src/fonts/index.ts +49 -0
  95. package/src/index.ts +9 -0
  96. package/src/theme/PawprintProvider.tsx +26 -0
  97. package/src/theme/ThemeProvider.tsx +63 -0
  98. package/src/theme/index.ts +5 -0
  99. package/src/theme/theme.ts +3 -0
  100. package/src/theme/utils.ts +31 -0
  101. package/src/types/fonts.d.ts +4 -0
  102. package/src/types/index.ts +1 -0
  103. package/src/types/theme.ts +24 -0
  104. package/tsconfig.json +5 -0
  105. package/tsup.config.ts +11 -0
package/dist/index.js ADDED
@@ -0,0 +1,2617 @@
1
+ import { useTheme, ThemeProvider as ThemeProvider$1 } from '@emotion/react';
2
+ import { Brand, Theme, THEME_OPTIONS_MAP, DEFAULT_THEME_OPTIONS, tokens } from '@butternutbox/pawprint-tokens';
3
+ export { tokens } from '@butternutbox/pawprint-tokens';
4
+ import styled25 from '@emotion/native';
5
+ export { default as styled } from '@emotion/native';
6
+ import React26, { createContext, useRef, useEffect, forwardRef, useCallback, useState, useMemo, useContext } from 'react';
7
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
+ import * as AvatarPrimitive from '@rn-primitives/avatar';
9
+ import { Text, View, Animated, Easing, Pressable, TextInput, ScrollView, PanResponder, Linking } from 'react-native';
10
+ import * as SwitchPrimitive from '@rn-primitives/switch';
11
+ import * as CheckboxPrimitive from '@rn-primitives/checkbox';
12
+ import * as SliderPrimitive from '@rn-primitives/slider';
13
+
14
+ var __defProp = Object.defineProperty;
15
+ var __defProps = Object.defineProperties;
16
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
17
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
18
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
19
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
20
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
21
+ var __spreadValues = (a, b) => {
22
+ for (var prop in b || (b = {}))
23
+ if (__hasOwnProp.call(b, prop))
24
+ __defNormalProp(a, prop, b[prop]);
25
+ if (__getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(b)) {
27
+ if (__propIsEnum.call(b, prop))
28
+ __defNormalProp(a, prop, b[prop]);
29
+ }
30
+ return a;
31
+ };
32
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
33
+ var __objRest = (source, exclude) => {
34
+ var target = {};
35
+ for (var prop in source)
36
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
37
+ target[prop] = source[prop];
38
+ if (source != null && __getOwnPropSymbols)
39
+ for (var prop of __getOwnPropSymbols(source)) {
40
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
41
+ target[prop] = source[prop];
42
+ }
43
+ return target;
44
+ };
45
+
46
+ // src/fonts/ida-narrow-500-normal.woff2
47
+ var ida_narrow_500_normal_default = "./ida-narrow-500-normal-C6I2PK4T.woff2";
48
+
49
+ // src/fonts/ida-narrow-700-normal.woff2
50
+ var ida_narrow_700_normal_default = "./ida-narrow-700-normal-UPHPRIN6.woff2";
51
+
52
+ // src/fonts/ibm-plex-sans-condensed-400-normal.woff2
53
+ var ibm_plex_sans_condensed_400_normal_default = "./ibm-plex-sans-condensed-400-normal-I2XLJNNB.woff2";
54
+
55
+ // src/fonts/ibm-plex-sans-condensed-500-normal.woff2
56
+ var ibm_plex_sans_condensed_500_normal_default = "./ibm-plex-sans-condensed-500-normal-IEQBNVGX.woff2";
57
+
58
+ // src/fonts/ibm-plex-sans-condensed-600-normal.woff2
59
+ var ibm_plex_sans_condensed_600_normal_default = "./ibm-plex-sans-condensed-600-normal-UX5ZU5T6.woff2";
60
+
61
+ // src/fonts/ibm-plex-sans-condensed-700-normal.woff2
62
+ var ibm_plex_sans_condensed_700_normal_default = "./ibm-plex-sans-condensed-700-normal-4PFYFTSO.woff2";
63
+
64
+ // src/fonts/index.ts
65
+ var BRAND_FONTS = {
66
+ [Brand.Butternutbox]: {
67
+ "IdaNarrow-Medium": ida_narrow_500_normal_default,
68
+ "IdaNarrow-Bold": ida_narrow_700_normal_default,
69
+ "IBMPlexSansCondensed-Regular": ibm_plex_sans_condensed_400_normal_default,
70
+ "IBMPlexSansCondensed-Medium": ibm_plex_sans_condensed_500_normal_default,
71
+ "IBMPlexSansCondensed-SemiBold": ibm_plex_sans_condensed_600_normal_default,
72
+ "IBMPlexSansCondensed-Bold": ibm_plex_sans_condensed_700_normal_default
73
+ }
74
+ };
75
+ var FONT_MAP = {
76
+ "IBM Plex Sans Condensed": {
77
+ "400": "IBMPlexSansCondensed-Regular",
78
+ "500": "IBMPlexSansCondensed-Medium",
79
+ "600": "IBMPlexSansCondensed-SemiBold",
80
+ "700": "IBMPlexSansCondensed-Bold"
81
+ },
82
+ "Ida Narrow": {
83
+ "500": "IdaNarrow-Medium",
84
+ "700": "IdaNarrow-Bold"
85
+ }
86
+ };
87
+ var resolveFont = (fontFamily, fontWeight) => {
88
+ var _a;
89
+ const resolved = (_a = FONT_MAP[fontFamily]) == null ? void 0 : _a[fontWeight];
90
+ return { fontFamily: resolved != null ? resolved : fontFamily };
91
+ };
92
+ var createPawprintTheme = (brand = Brand.Butternutbox, theme2 = Theme.Default) => {
93
+ const brandThemes = THEME_OPTIONS_MAP[brand];
94
+ const themeOptions = brandThemes && theme2 in brandThemes ? brandThemes[theme2] : DEFAULT_THEME_OPTIONS;
95
+ return themeOptions;
96
+ };
97
+ var ThemeContext = createContext({
98
+ brand: Brand.Butternutbox,
99
+ theme: Theme.Default,
100
+ setTheme: (_theme) => {
101
+ },
102
+ emotionTheme: createPawprintTheme(Brand.Butternutbox, Theme.Default)
103
+ });
104
+ var ThemeProvider = ({
105
+ children,
106
+ brand = Brand.Butternutbox,
107
+ initialTheme = Theme.Default
108
+ }) => {
109
+ const [theme2, setTheme] = useState(initialTheme);
110
+ const emotionTheme = useMemo(
111
+ () => createPawprintTheme(brand, theme2),
112
+ [brand, theme2]
113
+ );
114
+ const contextValue = useMemo(
115
+ () => ({
116
+ brand,
117
+ theme: theme2,
118
+ setTheme,
119
+ emotionTheme
120
+ }),
121
+ [brand, theme2, emotionTheme]
122
+ );
123
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(ThemeProvider$1, { theme: emotionTheme, children }) });
124
+ };
125
+ var usePawprint = () => useContext(ThemeContext);
126
+ var PawprintProvider = ({
127
+ brand = Brand.Butternutbox,
128
+ initialTheme = Theme.Default,
129
+ children
130
+ }) => {
131
+ return /* @__PURE__ */ jsx(ThemeProvider, { brand, initialTheme, children });
132
+ };
133
+ var theme = tokens;
134
+ var parseTokenValue = (value) => parseFloat(value);
135
+ var resolveLetterSpacing = (letterSpacing, fontSize) => {
136
+ if (letterSpacing.endsWith("%")) {
137
+ return parseFloat(letterSpacing) / 100 * fontSize;
138
+ }
139
+ return parseFloat(letterSpacing);
140
+ };
141
+ var semanticToStyle = (token) => {
142
+ const { fontFamily } = resolveFont(token.fontFamily, token.fontWeight);
143
+ const fontSize = parseTokenValue(token.fontSize);
144
+ return __spreadValues({
145
+ fontFamily,
146
+ fontSize,
147
+ lineHeight: parseTokenValue(token.lineHeight)
148
+ }, token.letterSpacing && {
149
+ letterSpacing: resolveLetterSpacing(token.letterSpacing, fontSize)
150
+ });
151
+ };
152
+ var nativeTokenToStyle = (token) => {
153
+ const style = {};
154
+ if (token.fontFamily && token.fontWeight) {
155
+ const { fontFamily } = resolveFont(token.fontFamily, token.fontWeight);
156
+ style.fontFamily = fontFamily;
157
+ } else if (token.fontFamily) {
158
+ style.fontFamily = token.fontFamily;
159
+ }
160
+ if (token.fontSize) style.fontSize = parseTokenValue(token.fontSize);
161
+ if (token.lineHeight) style.lineHeight = parseTokenValue(token.lineHeight);
162
+ if (token.letterSpacing && style.fontSize) {
163
+ style.letterSpacing = resolveLetterSpacing(
164
+ token.letterSpacing,
165
+ style.fontSize
166
+ );
167
+ }
168
+ return style;
169
+ };
170
+ var VARIANT_DEFAULTS = {
171
+ body: { size: "md" },
172
+ heading: { size: "md" },
173
+ display: { size: "lg" }
174
+ };
175
+ var StyledText = styled25(Text)({});
176
+ var Typography = React26.forwardRef(
177
+ (props, ref) => {
178
+ const theme2 = useTheme();
179
+ const { typography, colour } = theme2.tokens.semantics;
180
+ const getCommonStyles = (align2, textTransform2, textDecoration2) => __spreadValues(__spreadValues(__spreadValues({}, align2 && { textAlign: align2 }), textTransform2 && { textTransform: textTransform2 }), textDecoration2 && {
181
+ textDecorationLine: textDecoration2
182
+ });
183
+ if ("token" in props && props.token) {
184
+ const _a = props, {
185
+ token,
186
+ color: color2,
187
+ align: align2,
188
+ noWrap: noWrap2,
189
+ textTransform: textTransform2,
190
+ textDecoration: textDecoration2
191
+ } = _a, rest2 = __objRest(_a, [
192
+ "token",
193
+ "color",
194
+ "align",
195
+ "noWrap",
196
+ "textTransform",
197
+ "textDecoration"
198
+ ]);
199
+ const style = __spreadValues(__spreadValues(__spreadValues({}, nativeTokenToStyle(token)), color2 ? { color: color2 } : {}), getCommonStyles(align2, textTransform2, textDecoration2));
200
+ return /* @__PURE__ */ jsx(
201
+ StyledText,
202
+ __spreadValues({
203
+ ref,
204
+ style,
205
+ numberOfLines: noWrap2 ? 1 : void 0,
206
+ ellipsizeMode: noWrap2 ? "tail" : void 0
207
+ }, rest2)
208
+ );
209
+ }
210
+ const _b = props, {
211
+ variant = "body",
212
+ size,
213
+ weight = "medium",
214
+ color = "primary",
215
+ align,
216
+ noWrap,
217
+ textTransform,
218
+ textDecoration
219
+ } = _b, rest = __objRest(_b, [
220
+ "variant",
221
+ "size",
222
+ "weight",
223
+ "color",
224
+ "align",
225
+ "noWrap",
226
+ "textTransform",
227
+ "textDecoration"
228
+ ]);
229
+ const resolvedSize = size != null ? size : VARIANT_DEFAULTS[variant].size;
230
+ const commonStyles = getCommonStyles(align, textTransform, textDecoration);
231
+ const getSemanticColor = (colorKey) => ({
232
+ color: colour.text[colorKey]
233
+ });
234
+ let textStyle = {};
235
+ if (variant === "body") {
236
+ textStyle = __spreadValues(__spreadValues(__spreadValues({}, semanticToStyle(typography.body[weight][resolvedSize])), getSemanticColor(color)), commonStyles);
237
+ } else if (variant === "heading") {
238
+ const headingSize = resolvedSize;
239
+ const tokenSet = typography.heading.mobile[headingSize];
240
+ textStyle = __spreadValues(__spreadValues(__spreadValues({}, semanticToStyle(tokenSet)), getSemanticColor(color)), commonStyles);
241
+ } else if (variant === "display") {
242
+ const displaySize = resolvedSize;
243
+ const tokenSet = typography.heading.display.mobile[displaySize];
244
+ textStyle = __spreadValues(__spreadValues(__spreadValues({}, semanticToStyle(tokenSet)), getSemanticColor(color)), commonStyles);
245
+ }
246
+ return /* @__PURE__ */ jsx(
247
+ StyledText,
248
+ __spreadValues({
249
+ ref,
250
+ style: textStyle,
251
+ numberOfLines: noWrap ? 1 : void 0,
252
+ ellipsizeMode: noWrap ? "tail" : void 0
253
+ }, rest)
254
+ );
255
+ }
256
+ );
257
+ Typography.displayName = "Typography";
258
+ var SIZE_MAP = {
259
+ sm: "small",
260
+ md: "medium",
261
+ lg: "large"
262
+ };
263
+ var parseTokenValue2 = (value) => parseFloat(value);
264
+ var StyledRoot = styled25(AvatarPrimitive.Root)(({ theme: theme2, size, border }) => {
265
+ const { avatar } = theme2.tokens.components;
266
+ const { borderRadius } = theme2.tokens.semantics.dimensions;
267
+ const tokenSize = SIZE_MAP[size];
268
+ const avatarSize = parseTokenValue2(avatar.size[tokenSize]);
269
+ return __spreadValues({
270
+ display: "flex",
271
+ alignItems: "center",
272
+ justifyContent: "center",
273
+ overflow: "hidden",
274
+ borderRadius: parseTokenValue2(borderRadius.round),
275
+ width: avatarSize,
276
+ height: avatarSize
277
+ }, border !== "none" && {
278
+ borderWidth: parseTokenValue2(
279
+ avatar.borderWidth[border === "sm" ? "small" : "medium"]
280
+ ),
281
+ borderColor: avatar.colour.border.default,
282
+ borderStyle: "solid"
283
+ });
284
+ });
285
+ var StyledImage = styled25(AvatarPrimitive.Image)({
286
+ width: "100%",
287
+ height: "100%",
288
+ resizeMode: "cover"
289
+ });
290
+ var StyledFallback = styled25(AvatarPrimitive.Fallback)(({ theme: theme2 }) => {
291
+ const { background, text } = theme2.tokens.semantics.colour;
292
+ return {
293
+ display: "flex",
294
+ alignItems: "center",
295
+ justifyContent: "center",
296
+ width: "100%",
297
+ height: "100%",
298
+ backgroundColor: background.container.disabled,
299
+ color: text.disabled
300
+ };
301
+ });
302
+ var AVATAR_TO_BODY_SIZE = {
303
+ sm: "xs",
304
+ md: "sm",
305
+ lg: "md"
306
+ };
307
+ var AvatarRoot = React26.forwardRef(
308
+ (_a, ref) => {
309
+ var _b = _a, {
310
+ src,
311
+ alt,
312
+ size = "md",
313
+ border = "none",
314
+ fallbackType,
315
+ fallbackString
316
+ } = _b, rest = __objRest(_b, [
317
+ "src",
318
+ "alt",
319
+ "size",
320
+ "border",
321
+ "fallbackType",
322
+ "fallbackString"
323
+ ]);
324
+ const effectiveFallbackType = fallbackType != null ? fallbackType : fallbackString ? "string" : "image";
325
+ const showStringFallback = effectiveFallbackType === "string" && fallbackString;
326
+ return /* @__PURE__ */ jsxs(StyledRoot, __spreadProps(__spreadValues({ ref, alt, size, border }, rest), { children: [
327
+ src && /* @__PURE__ */ jsx(StyledImage, { source: { uri: src } }),
328
+ /* @__PURE__ */ jsx(StyledFallback, { children: showStringFallback ? /* @__PURE__ */ jsx(
329
+ Typography,
330
+ {
331
+ size: AVATAR_TO_BODY_SIZE[size],
332
+ weight: "bold",
333
+ color: "disabled",
334
+ children: fallbackString
335
+ }
336
+ ) : (
337
+ // TODO: replace with the Icon when available
338
+ /* @__PURE__ */ jsx(Typography, { size: AVATAR_TO_BODY_SIZE[size], color: "disabled", children: "\u{1F464}" })
339
+ ) })
340
+ ] }));
341
+ }
342
+ );
343
+ AvatarRoot.displayName = "Avatar";
344
+ var Avatar = AvatarRoot;
345
+ var parseTokenValue3 = (value) => parseFloat(value);
346
+ var StyledIconRoot = styled25(View)(({ iconDimension }) => ({
347
+ alignItems: "center",
348
+ justifyContent: "center",
349
+ flexShrink: 0,
350
+ width: iconDimension,
351
+ height: iconDimension
352
+ }));
353
+ var Icon = React26.forwardRef(
354
+ (_a, ref) => {
355
+ var _b = _a, {
356
+ icon: IconComponent,
357
+ size = "md",
358
+ colour = "primary",
359
+ "aria-label": ariaLabel
360
+ } = _b, rest = __objRest(_b, [
361
+ "icon",
362
+ "size",
363
+ "colour",
364
+ "aria-label"
365
+ ]);
366
+ const theme2 = useTheme();
367
+ const category = IconComponent.category || "core";
368
+ const iconTokens = theme2.tokens.semantics.colour.icon;
369
+ let color;
370
+ if (colour === "action-default") {
371
+ color = iconTokens.action.default;
372
+ } else if (colour === "action-inverse") {
373
+ color = iconTokens.action.inverse;
374
+ } else {
375
+ color = iconTokens[colour];
376
+ }
377
+ const sizing = theme2.tokens.components.icons.sizing.icons;
378
+ const categorySizing = sizing[category];
379
+ const dimension = parseTokenValue3(categorySizing[size]);
380
+ return /* @__PURE__ */ jsx(
381
+ StyledIconRoot,
382
+ __spreadProps(__spreadValues({
383
+ ref,
384
+ iconDimension: dimension,
385
+ accessibilityRole: ariaLabel ? "image" : void 0,
386
+ accessibilityLabel: ariaLabel,
387
+ accessible: !!ariaLabel
388
+ }, rest), {
389
+ children: /* @__PURE__ */ jsx(IconComponent, { width: dimension, height: dimension, color })
390
+ })
391
+ );
392
+ }
393
+ );
394
+ Icon.displayName = "Icon";
395
+ var parseTokenValue4 = (value) => parseFloat(value);
396
+ var StyledBadge = styled25(View)(({ theme: theme2, badgeVariant, badgeSize, pinned, top, bottom }) => {
397
+ const { sizing, spacing, colour, primary, pinnedBadge } = theme2.tokens.components.badges.badge;
398
+ const backgroundColorMap = {
399
+ primary: colour.background.default,
400
+ promo: colour.background.promo,
401
+ success: colour.background.success,
402
+ warning: colour.background.warning,
403
+ error: colour.background.error
404
+ };
405
+ const borderRadiusStyles = pinned ? {
406
+ borderTopLeftRadius: parseTokenValue4(
407
+ pinnedBadge.borderRadius.leftRadius
408
+ ),
409
+ borderBottomLeftRadius: parseTokenValue4(
410
+ pinnedBadge.borderRadius.leftRadius
411
+ ),
412
+ borderTopRightRadius: parseTokenValue4(
413
+ pinnedBadge.borderRadius.rightRadius
414
+ ),
415
+ borderBottomRightRadius: parseTokenValue4(
416
+ pinnedBadge.borderRadius.rightRadius
417
+ )
418
+ } : {
419
+ borderRadius: parseTokenValue4(primary.borderRadius.default)
420
+ };
421
+ const positionStyles = pinned ? __spreadValues(__spreadValues({
422
+ position: "absolute",
423
+ left: 0
424
+ }, top !== void 0 && { top }), bottom !== void 0 && { bottom }) : {};
425
+ return __spreadValues(__spreadValues({
426
+ flexDirection: "row",
427
+ alignItems: "center",
428
+ justifyContent: "center",
429
+ height: parseTokenValue4(sizing[badgeSize].height),
430
+ minWidth: parseTokenValue4(sizing[badgeSize].minWidth),
431
+ paddingHorizontal: parseTokenValue4(spacing[badgeSize].horizontalPadding),
432
+ gap: parseTokenValue4(spacing[badgeSize].gap),
433
+ backgroundColor: backgroundColorMap[badgeVariant]
434
+ }, borderRadiusStyles), positionStyles);
435
+ });
436
+ var Badge = React26.forwardRef(
437
+ (_a, ref) => {
438
+ var _b = _a, {
439
+ variant = "primary",
440
+ size = "medium",
441
+ pinned = false,
442
+ icon,
443
+ children,
444
+ top,
445
+ bottom
446
+ } = _b, rest = __objRest(_b, [
447
+ "variant",
448
+ "size",
449
+ "pinned",
450
+ "icon",
451
+ "children",
452
+ "top",
453
+ "bottom"
454
+ ]);
455
+ const theme2 = useTheme();
456
+ const { typography, colour } = theme2.tokens.components.badges.badge;
457
+ const iconSizeMap = {
458
+ small: "xs",
459
+ medium: "xs",
460
+ large: "sm"
461
+ };
462
+ const iconColourMap = {
463
+ primary: "primary",
464
+ promo: "promo",
465
+ success: "alt",
466
+ warning: "alt",
467
+ error: "alt"
468
+ };
469
+ const textColorMap = {
470
+ primary: colour.text.primary,
471
+ promo: colour.text.promo,
472
+ success: colour.text.default,
473
+ warning: colour.text.default,
474
+ error: colour.text.default
475
+ };
476
+ return /* @__PURE__ */ jsxs(
477
+ StyledBadge,
478
+ __spreadProps(__spreadValues({
479
+ ref,
480
+ badgeVariant: variant,
481
+ badgeSize: size,
482
+ pinned,
483
+ top,
484
+ bottom
485
+ }, rest), {
486
+ children: [
487
+ icon && /* @__PURE__ */ jsx(
488
+ Icon,
489
+ {
490
+ icon,
491
+ size: iconSizeMap[size],
492
+ colour: iconColourMap[variant]
493
+ }
494
+ ),
495
+ /* @__PURE__ */ jsx(
496
+ Typography,
497
+ {
498
+ token: typography[size].default,
499
+ color: textColorMap[variant],
500
+ children
501
+ }
502
+ )
503
+ ]
504
+ })
505
+ );
506
+ }
507
+ );
508
+ Badge.displayName = "Badge";
509
+ var parseTokenValue5 = (value) => parseFloat(value);
510
+ var StyledSpinner = styled25(View)({});
511
+ var Spinner = React26.forwardRef(
512
+ (_a, ref) => {
513
+ var _b = _a, { size = "md", variant = "dark", style } = _b, rest = __objRest(_b, ["size", "variant", "style"]);
514
+ const theme2 = useTheme();
515
+ const spinAnim = useRef(new Animated.Value(0)).current;
516
+ const { size: sizeTokens, colour } = theme2.tokens.components.spinner;
517
+ const borderWidth = parseTokenValue5(
518
+ theme2.tokens.semantics.dimensions.borderWidth.md
519
+ );
520
+ const baseColor = colour.background.base[variant];
521
+ const progressColor = colour.background.progress[variant];
522
+ const dimension = parseTokenValue5(sizeTokens[size]);
523
+ useEffect(() => {
524
+ const animation = Animated.loop(
525
+ Animated.timing(spinAnim, {
526
+ toValue: 1,
527
+ duration: 600,
528
+ easing: Easing.linear,
529
+ useNativeDriver: true
530
+ })
531
+ );
532
+ animation.start();
533
+ return () => animation.stop();
534
+ }, [spinAnim]);
535
+ const spin = spinAnim.interpolate({
536
+ inputRange: [0, 1],
537
+ outputRange: ["0deg", "360deg"]
538
+ });
539
+ return /* @__PURE__ */ jsx(StyledSpinner, __spreadProps(__spreadValues({ ref }, rest), { children: /* @__PURE__ */ jsx(
540
+ Animated.View,
541
+ {
542
+ accessibilityRole: "progressbar",
543
+ accessibilityLabel: "Loading",
544
+ style: [
545
+ {
546
+ width: dimension,
547
+ height: dimension,
548
+ borderRadius: dimension / 2,
549
+ borderWidth,
550
+ borderColor: baseColor,
551
+ borderTopColor: progressColor,
552
+ transform: [{ rotate: spin }]
553
+ },
554
+ style
555
+ ]
556
+ }
557
+ ) }));
558
+ }
559
+ );
560
+ Spinner.displayName = "Spinner";
561
+ var parseTokenValue6 = (value) => parseFloat(value);
562
+ var sizeToTypographyKey = {
563
+ lg: "large",
564
+ md: "medium",
565
+ sm: "small"
566
+ };
567
+ var IconWrapper = styled25(View)({
568
+ alignItems: "center",
569
+ justifyContent: "center",
570
+ flexShrink: 0
571
+ });
572
+ var StyledButton = styled25(Pressable)(
573
+ ({
574
+ buttonHeight,
575
+ buttonMinWidth,
576
+ buttonPaddingHorizontal,
577
+ buttonPaddingVertical,
578
+ buttonGap,
579
+ buttonBorderRadius,
580
+ buttonBgColor,
581
+ buttonOpacity,
582
+ buttonBorderWidth,
583
+ buttonBorderColor,
584
+ buttonFullWidth
585
+ }) => __spreadValues(__spreadValues({
586
+ flexDirection: "row",
587
+ alignItems: "center",
588
+ justifyContent: "center",
589
+ position: "relative",
590
+ height: buttonHeight,
591
+ minWidth: buttonMinWidth,
592
+ paddingHorizontal: buttonPaddingHorizontal,
593
+ paddingVertical: buttonPaddingVertical,
594
+ gap: buttonGap,
595
+ borderRadius: buttonBorderRadius,
596
+ backgroundColor: buttonBgColor,
597
+ opacity: buttonOpacity
598
+ }, buttonBorderWidth ? { borderWidth: buttonBorderWidth, borderColor: buttonBorderColor } : {}), buttonFullWidth ? { width: "100%" } : {})
599
+ );
600
+ var StyledTextWrapper = styled25(View)(({ textOpacity }) => ({
601
+ opacity: textOpacity
602
+ }));
603
+ var StyledSpinnerWrapper = styled25(View)({
604
+ position: "absolute",
605
+ alignItems: "center",
606
+ justifyContent: "center"
607
+ });
608
+ var Button = React26.forwardRef(
609
+ (_a, ref) => {
610
+ var _b = _a, {
611
+ variant = "filled",
612
+ size = "md",
613
+ colour = "primary",
614
+ loading = false,
615
+ fullWidth = false,
616
+ startIcon,
617
+ endIcon,
618
+ children,
619
+ disabled
620
+ } = _b, rest = __objRest(_b, [
621
+ "variant",
622
+ "size",
623
+ "colour",
624
+ "loading",
625
+ "fullWidth",
626
+ "startIcon",
627
+ "endIcon",
628
+ "children",
629
+ "disabled"
630
+ ]);
631
+ const theme2 = useTheme();
632
+ const isDisabled = disabled || loading;
633
+ const buttons = theme2.tokens.components.buttons;
634
+ const sizeTokens = buttons.size[size];
635
+ const spacingTokens = buttons.spacing[size];
636
+ const typographyKey = sizeToTypographyKey[size];
637
+ const typography = buttons.text[typographyKey];
638
+ resolveFont(typography.fontFamily, typography.fontWeight);
639
+ const [pressed, setPressed] = React26.useState(false);
640
+ const getVariantStyles = (isPressed) => {
641
+ if (variant === "filled") {
642
+ const bgTokens = buttons.filledButton.colour.background[colour];
643
+ const textToken = buttons.filledButton.colour.text[colour].default;
644
+ return {
645
+ backgroundColor: isDisabled ? bgTokens.disabled : isPressed ? bgTokens.selected : bgTokens.default,
646
+ textColor: textToken,
647
+ spinnerColor: textToken
648
+ };
649
+ }
650
+ if (variant === "outlined") {
651
+ const outline = buttons.outlineButton;
652
+ return {
653
+ backgroundColor: loading || isPressed ? outline.colour.background.selected : "transparent",
654
+ borderWidth: parseTokenValue6(outline.border.default),
655
+ borderColor: outline.colour.border.default,
656
+ textColor: loading || isPressed ? outline.colour.text.selected : outline.colour.text.default,
657
+ spinnerColor: outline.colour.text.selected
658
+ };
659
+ }
660
+ const text = buttons.textButton;
661
+ return {
662
+ backgroundColor: loading || isPressed ? text.background.selected : "transparent",
663
+ textColor: loading || isPressed ? text.text.selected : text.text.default,
664
+ spinnerColor: text.text.selected
665
+ };
666
+ };
667
+ const variantStyles = getVariantStyles(pressed);
668
+ return /* @__PURE__ */ jsxs(
669
+ StyledButton,
670
+ __spreadProps(__spreadValues({
671
+ ref,
672
+ disabled: isDisabled,
673
+ accessibilityState: { disabled: isDisabled, busy: loading },
674
+ onPressIn: () => setPressed(true),
675
+ onPressOut: () => setPressed(false),
676
+ buttonHeight: parseTokenValue6(sizeTokens.height),
677
+ buttonMinWidth: parseTokenValue6(sizeTokens.minWidth),
678
+ buttonPaddingHorizontal: parseTokenValue6(
679
+ spacingTokens.horizontalPadding
680
+ ),
681
+ buttonPaddingVertical: parseTokenValue6(spacingTokens.verticalPadding),
682
+ buttonGap: parseTokenValue6(spacingTokens.gap),
683
+ buttonBorderRadius: parseTokenValue6(buttons.borderRadius.default),
684
+ buttonBgColor: variantStyles.backgroundColor,
685
+ buttonOpacity: isDisabled && !loading ? parseFloat(buttons.opacity.disabled) : 1,
686
+ buttonBorderWidth: variantStyles.borderWidth,
687
+ buttonBorderColor: variantStyles.borderColor,
688
+ buttonFullWidth: fullWidth
689
+ }, rest), {
690
+ children: [
691
+ startIcon && /* @__PURE__ */ jsx(IconWrapper, { children: startIcon }),
692
+ /* @__PURE__ */ jsx(StyledTextWrapper, { textOpacity: loading ? 0 : 1, children: /* @__PURE__ */ jsx(
693
+ Typography,
694
+ {
695
+ token: {
696
+ fontFamily: typography.fontFamily,
697
+ fontWeight: typography.fontWeight,
698
+ fontSize: typography.fontSize,
699
+ lineHeight: typography.fontSize,
700
+ letterSpacing: typography.letterSpacing
701
+ },
702
+ color: variantStyles.textColor,
703
+ children
704
+ }
705
+ ) }),
706
+ endIcon && /* @__PURE__ */ jsx(IconWrapper, { children: endIcon }),
707
+ loading && /* @__PURE__ */ jsx(StyledSpinnerWrapper, { children: /* @__PURE__ */ jsx(
708
+ Spinner,
709
+ {
710
+ size,
711
+ style: {
712
+ borderColor: "transparent",
713
+ borderTopColor: variantStyles.spinnerColor
714
+ }
715
+ }
716
+ ) })
717
+ ]
718
+ })
719
+ );
720
+ }
721
+ );
722
+ Button.displayName = "Button";
723
+ var parseTokenValue7 = (value) => parseFloat(value);
724
+ var StyledHint = styled25(View)(({
725
+ theme: theme2,
726
+ hintVariant
727
+ }) => {
728
+ const {
729
+ badge,
730
+ hint: {
731
+ colour: { background }
732
+ }
733
+ } = theme2.tokens.components.badges;
734
+ const hintVariantMap = {
735
+ default: background.default,
736
+ success: background.success,
737
+ warning: background.warning,
738
+ error: background.error
739
+ };
740
+ const size = parseTokenValue7(badge.hint.sizing.default);
741
+ return {
742
+ width: size,
743
+ height: size,
744
+ borderRadius: size / 2,
745
+ backgroundColor: hintVariantMap[hintVariant]
746
+ };
747
+ });
748
+ var Hint = React26.forwardRef(
749
+ (_a, ref) => {
750
+ var _b = _a, { variant = "default" } = _b, rest = __objRest(_b, ["variant"]);
751
+ return /* @__PURE__ */ jsx(StyledHint, __spreadValues({ ref, hintVariant: variant }, rest));
752
+ }
753
+ );
754
+ Hint.displayName = "Hint";
755
+ var parseTokenValue8 = (value) => parseFloat(value);
756
+ var sizeToIconSizeToken = {
757
+ lg: "xl",
758
+ md: "lg",
759
+ sm: "md"
760
+ };
761
+ var StyledIconButton = styled25(Pressable)(
762
+ ({
763
+ buttonDimension,
764
+ buttonBorderRadius,
765
+ buttonBgColor,
766
+ buttonOpacity,
767
+ buttonBorderWidth,
768
+ buttonBorderColor
769
+ }) => __spreadValues({
770
+ alignItems: "center",
771
+ justifyContent: "center",
772
+ position: "relative",
773
+ width: buttonDimension,
774
+ height: buttonDimension,
775
+ borderRadius: buttonBorderRadius,
776
+ backgroundColor: buttonBgColor,
777
+ opacity: buttonOpacity
778
+ }, buttonBorderWidth ? { borderWidth: buttonBorderWidth, borderColor: buttonBorderColor } : {})
779
+ );
780
+ var StyledIconWrapper = styled25(View)(({ iconDimension, iconOpacity }) => ({
781
+ width: iconDimension,
782
+ height: iconDimension,
783
+ opacity: iconOpacity
784
+ }));
785
+ var StyledSpinnerWrapper2 = styled25(View)({
786
+ position: "absolute",
787
+ alignItems: "center",
788
+ justifyContent: "center"
789
+ });
790
+ var IconButton = React26.forwardRef(
791
+ (_a, ref) => {
792
+ var _b = _a, {
793
+ icon: IconComponent,
794
+ variant = "filled",
795
+ size = "md",
796
+ colour = "primary",
797
+ loading = false,
798
+ disabled,
799
+ "aria-label": ariaLabel
800
+ } = _b, rest = __objRest(_b, [
801
+ "icon",
802
+ "variant",
803
+ "size",
804
+ "colour",
805
+ "loading",
806
+ "disabled",
807
+ "aria-label"
808
+ ]);
809
+ const theme2 = useTheme();
810
+ const isDisabled = disabled || loading;
811
+ const buttons = theme2.tokens.components.buttons;
812
+ const sizeTokens = buttons.size[size];
813
+ const dimension = parseTokenValue8(sizeTokens.height);
814
+ const iconSizing = theme2.tokens.components.icons.sizing.icons.core;
815
+ const iconDimension = parseTokenValue8(iconSizing[sizeToIconSizeToken[size]]);
816
+ const [pressed, setPressed] = React26.useState(false);
817
+ const getVariantStyles = (isPressed) => {
818
+ if (variant === "filled") {
819
+ const filled = buttons.iconButton.filledButton;
820
+ const bgTokens = filled.colour.background[colour];
821
+ const iconTokens = filled.colour.icon[colour];
822
+ const hasStatefulIconColor = "hover" in iconTokens;
823
+ return {
824
+ backgroundColor: isDisabled ? bgTokens.disabled : loading || isPressed ? bgTokens.selected : bgTokens.default,
825
+ iconColor: (loading || isPressed) && hasStatefulIconColor ? iconTokens.selected : iconTokens.default
826
+ };
827
+ }
828
+ if (variant === "outlined") {
829
+ const outline = buttons.iconButton.outlineButton;
830
+ return {
831
+ backgroundColor: loading || isPressed ? outline.colour.background.selected : "transparent",
832
+ borderWidth: parseTokenValue8(outline.border.default),
833
+ borderColor: outline.colour.border.default,
834
+ iconColor: loading || isPressed ? outline.colour.icon.selected : outline.colour.icon.default
835
+ };
836
+ }
837
+ const text = buttons.iconButton.textButton;
838
+ return {
839
+ backgroundColor: loading || isPressed ? text.background.selected : "transparent",
840
+ iconColor: loading || isPressed ? text.icon.selected : text.icon.default
841
+ };
842
+ };
843
+ const variantStyles = getVariantStyles(pressed);
844
+ return /* @__PURE__ */ jsxs(
845
+ StyledIconButton,
846
+ __spreadProps(__spreadValues({
847
+ ref,
848
+ disabled: isDisabled,
849
+ accessibilityLabel: ariaLabel,
850
+ accessibilityState: { disabled: isDisabled, busy: loading },
851
+ onPressIn: () => setPressed(true),
852
+ onPressOut: () => setPressed(false),
853
+ buttonDimension: dimension,
854
+ buttonBorderRadius: parseTokenValue8(buttons.borderRadius.default),
855
+ buttonBgColor: variantStyles.backgroundColor,
856
+ buttonOpacity: isDisabled && !loading ? parseFloat(buttons.opacity.disabled) : 1,
857
+ buttonBorderWidth: variantStyles.borderWidth,
858
+ buttonBorderColor: variantStyles.borderColor
859
+ }, rest), {
860
+ children: [
861
+ /* @__PURE__ */ jsx(
862
+ StyledIconWrapper,
863
+ {
864
+ iconDimension,
865
+ iconOpacity: loading ? 0 : 1,
866
+ children: /* @__PURE__ */ jsx(
867
+ IconComponent,
868
+ {
869
+ width: iconDimension,
870
+ height: iconDimension,
871
+ color: variantStyles.iconColor
872
+ }
873
+ )
874
+ }
875
+ ),
876
+ loading && /* @__PURE__ */ jsx(StyledSpinnerWrapper2, { children: /* @__PURE__ */ jsx(
877
+ Spinner,
878
+ {
879
+ size,
880
+ style: {
881
+ borderColor: "transparent",
882
+ borderTopColor: "currentColor"
883
+ }
884
+ }
885
+ ) })
886
+ ]
887
+ })
888
+ );
889
+ }
890
+ );
891
+ IconButton.displayName = "IconButton";
892
+ var parseTokenValue9 = (value) => parseFloat(value);
893
+ var StyledRoot2 = styled25(View)(({ illustrationHeight }) => ({
894
+ alignItems: "center",
895
+ justifyContent: "center",
896
+ flexShrink: 0,
897
+ height: illustrationHeight
898
+ }));
899
+ var Illustration = React26.forwardRef(
900
+ (_a, ref) => {
901
+ var _b = _a, {
902
+ illustration: IllustrationComponent,
903
+ size = "sm",
904
+ "aria-label": ariaLabel
905
+ } = _b, rest = __objRest(_b, [
906
+ "illustration",
907
+ "size",
908
+ "aria-label"
909
+ ]);
910
+ const theme2 = useTheme();
911
+ const dimension = parseTokenValue9(
912
+ theme2.tokens.components.illustrations.sizing.illustrations[size]
913
+ );
914
+ return /* @__PURE__ */ jsx(
915
+ StyledRoot2,
916
+ __spreadProps(__spreadValues({
917
+ ref,
918
+ illustrationHeight: dimension,
919
+ accessibilityRole: ariaLabel ? "image" : void 0,
920
+ accessibilityLabel: ariaLabel,
921
+ accessible: !!ariaLabel
922
+ }, rest), {
923
+ children: /* @__PURE__ */ jsx(IllustrationComponent, { height: dimension })
924
+ })
925
+ );
926
+ }
927
+ );
928
+ Illustration.displayName = "Illustration";
929
+ var parseTokenValue10 = (value) => parseFloat(value);
930
+ var StyledLabelRow = styled25(View)(({ labelGap }) => ({
931
+ flexDirection: "row",
932
+ alignItems: "center",
933
+ gap: labelGap
934
+ }));
935
+ var InputLabel = React26.forwardRef(
936
+ (_a, ref) => {
937
+ var _b = _a, { optionalText, state = "default", children } = _b, rest = __objRest(_b, ["optionalText", "state", "children"]);
938
+ const theme2 = useTheme();
939
+ const { colour, text, spacing } = theme2.tokens.components.inputs;
940
+ return /* @__PURE__ */ jsxs(
941
+ StyledLabelRow,
942
+ __spreadProps(__spreadValues({
943
+ ref,
944
+ labelGap: parseTokenValue10(spacing.label.gap)
945
+ }, rest), {
946
+ children: [
947
+ /* @__PURE__ */ jsx(
948
+ Typography,
949
+ {
950
+ token: text.label,
951
+ color: state === "error" ? colour.label.error : colour.label.default,
952
+ children
953
+ }
954
+ ),
955
+ optionalText && /* @__PURE__ */ jsx(Typography, { token: text.optional, color: colour.label.optional, children: optionalText })
956
+ ]
957
+ })
958
+ );
959
+ }
960
+ );
961
+ InputLabel.displayName = "Input.Label";
962
+ var parseTokenValue11 = (value) => parseFloat(value);
963
+ var StyledInputWrapper = styled25(View)(
964
+ ({
965
+ wrapperGap,
966
+ wrapperMinWidth,
967
+ wrapperHeight,
968
+ wrapperPaddingVertical,
969
+ wrapperPaddingHorizontal,
970
+ wrapperBgColor,
971
+ wrapperBorderWidth,
972
+ wrapperBorderColor,
973
+ wrapperBorderRadius
974
+ }) => ({
975
+ flexDirection: "row",
976
+ alignItems: "center",
977
+ gap: wrapperGap,
978
+ minWidth: wrapperMinWidth,
979
+ width: "100%",
980
+ height: wrapperHeight,
981
+ paddingVertical: wrapperPaddingVertical,
982
+ paddingHorizontal: wrapperPaddingHorizontal,
983
+ backgroundColor: wrapperBgColor,
984
+ borderWidth: wrapperBorderWidth,
985
+ borderColor: wrapperBorderColor,
986
+ borderRadius: wrapperBorderRadius
987
+ })
988
+ );
989
+ var StyledInput = styled25(TextInput)(({ inputColor }) => ({
990
+ flex: 1,
991
+ minWidth: 0,
992
+ minHeight: 0,
993
+ padding: 0,
994
+ color: inputColor
995
+ }));
996
+ var StyledIconSlot = styled25(View)({
997
+ alignItems: "center",
998
+ justifyContent: "center",
999
+ flexShrink: 0
1000
+ });
1001
+ var InputField = React26.forwardRef(
1002
+ (_a, ref) => {
1003
+ var _b = _a, { leadingIcon, trailingIcon, state = "default", style } = _b, rest = __objRest(_b, ["leadingIcon", "trailingIcon", "state", "style"]);
1004
+ const theme2 = useTheme();
1005
+ const { spacing, colour, borderWidth, borderRadius, size } = theme2.tokens.components.inputs;
1006
+ const stateBorderColorMap = {
1007
+ error: colour.field.border.error,
1008
+ success: colour.field.border.success,
1009
+ default: colour.field.border.default
1010
+ };
1011
+ return /* @__PURE__ */ jsxs(
1012
+ StyledInputWrapper,
1013
+ {
1014
+ wrapperGap: parseTokenValue11(spacing.field.gap),
1015
+ wrapperMinWidth: parseTokenValue11(size.field.minWidth),
1016
+ wrapperHeight: parseTokenValue11(size.field.height),
1017
+ wrapperPaddingVertical: parseTokenValue11(spacing.field.verticalPadding),
1018
+ wrapperPaddingHorizontal: parseTokenValue11(
1019
+ spacing.field.horizontalPadding
1020
+ ),
1021
+ wrapperBgColor: colour.field.background.default,
1022
+ wrapperBorderWidth: parseTokenValue11(borderWidth.field.default),
1023
+ wrapperBorderColor: stateBorderColorMap[state],
1024
+ wrapperBorderRadius: parseTokenValue11(borderRadius.field.default),
1025
+ children: [
1026
+ leadingIcon && /* @__PURE__ */ jsx(StyledIconSlot, { children: leadingIcon }),
1027
+ /* @__PURE__ */ jsx(
1028
+ StyledInput,
1029
+ __spreadValues({
1030
+ ref,
1031
+ inputColor: colour.field.text.default,
1032
+ style,
1033
+ placeholderTextColor: colour.field.text.placeholder
1034
+ }, rest)
1035
+ ),
1036
+ trailingIcon && /* @__PURE__ */ jsx(StyledIconSlot, { children: trailingIcon })
1037
+ ]
1038
+ }
1039
+ );
1040
+ }
1041
+ );
1042
+ InputField.displayName = "Input.Field";
1043
+ var StyledDescriptionRow = styled25(View)({
1044
+ flexDirection: "row",
1045
+ alignItems: "center"
1046
+ });
1047
+ var InputDescription = React26.forwardRef(
1048
+ (_a, ref) => {
1049
+ var _b = _a, { state = "default", children } = _b, rest = __objRest(_b, ["state", "children"]);
1050
+ const theme2 = useTheme();
1051
+ const { colour, description } = theme2.tokens.components.inputs;
1052
+ return /* @__PURE__ */ jsx(StyledDescriptionRow, __spreadProps(__spreadValues({ ref }, rest), { children: /* @__PURE__ */ jsx(
1053
+ Typography,
1054
+ {
1055
+ token: description.text.default,
1056
+ color: state === "error" ? colour.description.error : colour.description.default,
1057
+ children
1058
+ }
1059
+ ) }));
1060
+ }
1061
+ );
1062
+ InputDescription.displayName = "Input.Description";
1063
+ var StyledErrorRow = styled25(View)({
1064
+ flexDirection: "row",
1065
+ alignItems: "center"
1066
+ });
1067
+ var InputError = React26.forwardRef(
1068
+ (_a, ref) => {
1069
+ var _b = _a, { children } = _b, rest = __objRest(_b, ["children"]);
1070
+ const theme2 = useTheme();
1071
+ const { colour, description } = theme2.tokens.components.inputs;
1072
+ return /* @__PURE__ */ jsx(StyledErrorRow, __spreadProps(__spreadValues({ ref }, rest), { children: /* @__PURE__ */ jsx(
1073
+ Typography,
1074
+ {
1075
+ token: description.text.default,
1076
+ color: colour.description.error,
1077
+ children
1078
+ }
1079
+ ) }));
1080
+ }
1081
+ );
1082
+ InputError.displayName = "Input.Error";
1083
+ var parseTokenValue12 = (value) => parseFloat(value);
1084
+ var StyledRoot3 = styled25(View)(({ theme: theme2 }) => {
1085
+ const { spacing } = theme2.tokens.components.inputs;
1086
+ return {
1087
+ gap: parseTokenValue12(spacing.gap)
1088
+ };
1089
+ });
1090
+ var InputRoot = React26.forwardRef(
1091
+ (_a, ref) => {
1092
+ var _b = _a, {
1093
+ label,
1094
+ description,
1095
+ error,
1096
+ state = "default",
1097
+ optionalText,
1098
+ children
1099
+ } = _b, inputFieldProps = __objRest(_b, [
1100
+ "label",
1101
+ "description",
1102
+ "error",
1103
+ "state",
1104
+ "optionalText",
1105
+ "children"
1106
+ ]);
1107
+ if (children) {
1108
+ return /* @__PURE__ */ jsx(StyledRoot3, { ref, children });
1109
+ }
1110
+ return /* @__PURE__ */ jsxs(StyledRoot3, { ref, children: [
1111
+ label && /* @__PURE__ */ jsx(InputLabel, { optionalText, state, children: label }),
1112
+ /* @__PURE__ */ jsx(InputField, __spreadValues({ state }, inputFieldProps)),
1113
+ description && /* @__PURE__ */ jsx(InputDescription, { state, children: description }),
1114
+ error && state === "error" && /* @__PURE__ */ jsx(InputError, { children: error })
1115
+ ] });
1116
+ }
1117
+ );
1118
+ InputRoot.displayName = "Input";
1119
+ var Input = Object.assign(InputRoot, {
1120
+ Root: StyledRoot3,
1121
+ Label: InputLabel,
1122
+ Field: InputField,
1123
+ Description: InputDescription,
1124
+ Error: InputError
1125
+ });
1126
+ var Link = React26.forwardRef(
1127
+ (_a, ref) => {
1128
+ var _b = _a, {
1129
+ size = "md",
1130
+ weight = "semiBold",
1131
+ standalone = false,
1132
+ disabled = false,
1133
+ href,
1134
+ children,
1135
+ onPress,
1136
+ style
1137
+ } = _b, rest = __objRest(_b, [
1138
+ "size",
1139
+ "weight",
1140
+ "standalone",
1141
+ "disabled",
1142
+ "href",
1143
+ "children",
1144
+ "onPress",
1145
+ "style"
1146
+ ]);
1147
+ const theme2 = useTheme();
1148
+ const { typography, colour } = theme2.tokens.semantics;
1149
+ const linkColour = colour.text.link;
1150
+ const handlePress = (e) => {
1151
+ if (onPress) {
1152
+ onPress(e);
1153
+ } else if (href) {
1154
+ Linking.openURL(href);
1155
+ }
1156
+ };
1157
+ return /* @__PURE__ */ jsx(
1158
+ Pressable,
1159
+ __spreadProps(__spreadValues({
1160
+ ref,
1161
+ disabled,
1162
+ onPress: handlePress,
1163
+ accessibilityRole: "link",
1164
+ accessibilityState: { disabled },
1165
+ style: ({ pressed }) => {
1166
+ const baseStyle = __spreadProps(__spreadValues({}, standalone && {
1167
+ flexDirection: "row",
1168
+ alignItems: "center",
1169
+ gap: 4
1170
+ }), {
1171
+ opacity: disabled ? 0.5 : 1
1172
+ });
1173
+ return [
1174
+ baseStyle,
1175
+ typeof style === "function" ? style({ pressed }) : style
1176
+ ];
1177
+ }
1178
+ }, rest), {
1179
+ children: ({ pressed }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1180
+ /* @__PURE__ */ jsx(
1181
+ Typography,
1182
+ {
1183
+ token: typography.link[weight][size],
1184
+ color: pressed ? linkColour.hover : linkColour.default,
1185
+ textDecoration: standalone ? "none" : "underline",
1186
+ children
1187
+ }
1188
+ ),
1189
+ standalone && /* @__PURE__ */ jsx(
1190
+ Typography,
1191
+ {
1192
+ token: typography.link[weight][size],
1193
+ color: pressed ? linkColour.hover : linkColour.default,
1194
+ children: " \u2192"
1195
+ }
1196
+ )
1197
+ ] })
1198
+ })
1199
+ );
1200
+ }
1201
+ );
1202
+ Link.displayName = "Link";
1203
+
1204
+ // src/components/atoms/Logo/Logo.registry.ts
1205
+ var LOGOS = {
1206
+ butternut: {},
1207
+ psibufet: {},
1208
+ bcorp: {}
1209
+ };
1210
+ function resolveLogo(brand, variant) {
1211
+ var _a;
1212
+ return (_a = LOGOS[brand]) == null ? void 0 : _a[variant];
1213
+ }
1214
+ function registerLogo(brand, variant, component) {
1215
+ if (!LOGOS[brand]) {
1216
+ LOGOS[brand] = {};
1217
+ }
1218
+ LOGOS[brand][variant] = component;
1219
+ }
1220
+ var StyledRoot4 = styled25(View)({
1221
+ alignItems: "center",
1222
+ justifyContent: "center",
1223
+ flexShrink: 0
1224
+ });
1225
+ var Logo = React26.forwardRef(
1226
+ (_a, ref) => {
1227
+ var _b = _a, { brand, variant = "primary", "aria-label": ariaLabel } = _b, rest = __objRest(_b, ["brand", "variant", "aria-label"]);
1228
+ const effectiveVariant = brand === "bcorp" ? "primary" : variant;
1229
+ const LogoComponent = resolveLogo(brand, effectiveVariant);
1230
+ if (!LogoComponent) {
1231
+ return null;
1232
+ }
1233
+ return /* @__PURE__ */ jsx(
1234
+ StyledRoot4,
1235
+ __spreadProps(__spreadValues({
1236
+ ref,
1237
+ accessibilityRole: ariaLabel ? "image" : void 0,
1238
+ accessibilityLabel: ariaLabel,
1239
+ accessible: !!ariaLabel
1240
+ }, rest), {
1241
+ children: /* @__PURE__ */ jsx(LogoComponent, {})
1242
+ })
1243
+ );
1244
+ }
1245
+ );
1246
+ Logo.displayName = "Logo";
1247
+ var parseTokenValue13 = (value) => parseFloat(value);
1248
+ var StyledContainer = styled25(View)(({ switchGap, switchOpacity }) => ({
1249
+ flexDirection: "row",
1250
+ alignItems: "flex-start",
1251
+ gap: switchGap,
1252
+ opacity: switchOpacity
1253
+ }));
1254
+ var StyledControl = styled25(SwitchPrimitive.Root)(
1255
+ ({
1256
+ switchChecked,
1257
+ controlWidth,
1258
+ controlHeight,
1259
+ controlBorderWidth,
1260
+ controlBorderColor,
1261
+ controlBgChecked,
1262
+ controlBgDefault
1263
+ }) => ({
1264
+ position: "relative",
1265
+ width: controlWidth,
1266
+ height: controlHeight,
1267
+ minWidth: controlWidth,
1268
+ minHeight: controlHeight,
1269
+ borderRadius: controlHeight,
1270
+ borderWidth: switchChecked ? 0 : controlBorderWidth,
1271
+ borderColor: switchChecked ? "transparent" : controlBorderColor,
1272
+ backgroundColor: switchChecked ? controlBgChecked : controlBgDefault,
1273
+ justifyContent: "center"
1274
+ })
1275
+ );
1276
+ var StyledThumb = styled25(Animated.View)(({ thumbSize, thumbBgColor }) => ({
1277
+ width: thumbSize,
1278
+ height: thumbSize,
1279
+ borderRadius: thumbSize / 2,
1280
+ backgroundColor: thumbBgColor,
1281
+ position: "absolute"
1282
+ }));
1283
+ var StyledContent = styled25(View)(({ contentGap }) => ({
1284
+ gap: contentGap
1285
+ }));
1286
+ var Switch = React26.forwardRef(
1287
+ (_a, ref) => {
1288
+ var _b = _a, {
1289
+ label,
1290
+ subText,
1291
+ disabled = false,
1292
+ checked: controlledChecked,
1293
+ defaultChecked = false,
1294
+ onCheckedChange
1295
+ } = _b, rest = __objRest(_b, [
1296
+ "label",
1297
+ "subText",
1298
+ "disabled",
1299
+ "checked",
1300
+ "defaultChecked",
1301
+ "onCheckedChange"
1302
+ ]);
1303
+ const theme2 = useTheme();
1304
+ const { size, colour, opacity, borderWidth, spacing, typography } = theme2.tokens.components.switch;
1305
+ const isControlled = controlledChecked !== void 0;
1306
+ const [internalChecked, setInternalChecked] = React26.useState(defaultChecked);
1307
+ const isChecked = isControlled ? controlledChecked : internalChecked;
1308
+ const controlWidth = parseTokenValue13(size.control.width);
1309
+ const controlHeight = parseTokenValue13(size.control.height);
1310
+ const thumbSize = parseTokenValue13(size.thumb.default);
1311
+ const borderWidthValue = parseTokenValue13(borderWidth.control.default);
1312
+ const outerInset = 5;
1313
+ const inset = outerInset - borderWidthValue;
1314
+ const translateX = controlWidth - thumbSize - outerInset * 2;
1315
+ const animValue = useRef(new Animated.Value(isChecked ? 1 : 0)).current;
1316
+ useEffect(() => {
1317
+ Animated.timing(animValue, {
1318
+ toValue: isChecked ? 1 : 0,
1319
+ duration: 200,
1320
+ useNativeDriver: true
1321
+ }).start();
1322
+ }, [isChecked, animValue]);
1323
+ const thumbTranslateX = animValue.interpolate({
1324
+ inputRange: [0, 1],
1325
+ outputRange: [inset, inset + translateX]
1326
+ });
1327
+ const handleCheckedChange = (checked) => {
1328
+ if (!isControlled) {
1329
+ setInternalChecked(checked);
1330
+ }
1331
+ onCheckedChange == null ? void 0 : onCheckedChange(checked);
1332
+ };
1333
+ return /* @__PURE__ */ jsxs(
1334
+ StyledContainer,
1335
+ __spreadProps(__spreadValues({
1336
+ ref,
1337
+ switchGap: parseTokenValue13(spacing.gap),
1338
+ switchOpacity: disabled ? parseFloat(opacity.disabled) : 1
1339
+ }, rest), {
1340
+ children: [
1341
+ /* @__PURE__ */ jsx(
1342
+ StyledControl,
1343
+ {
1344
+ checked: isChecked,
1345
+ onCheckedChange: handleCheckedChange,
1346
+ disabled,
1347
+ switchChecked: isChecked,
1348
+ controlWidth,
1349
+ controlHeight,
1350
+ controlBorderWidth: borderWidthValue,
1351
+ controlBorderColor: colour.control.border.default,
1352
+ controlBgChecked: colour.control.background.selected,
1353
+ controlBgDefault: colour.control.background.default,
1354
+ children: /* @__PURE__ */ jsx(SwitchPrimitive.Thumb, { asChild: true, children: /* @__PURE__ */ jsx(
1355
+ StyledThumb,
1356
+ {
1357
+ thumbSize,
1358
+ thumbBgColor: isChecked ? colour.thumb.background.selected : colour.thumb.background.default,
1359
+ style: { transform: [{ translateX: thumbTranslateX }] }
1360
+ }
1361
+ ) })
1362
+ }
1363
+ ),
1364
+ (label || subText) && /* @__PURE__ */ jsxs(StyledContent, { contentGap: parseTokenValue13(spacing.content.gap), children: [
1365
+ label && /* @__PURE__ */ jsx(Typography, { token: typography.label, color: colour.text.title, children: label }),
1366
+ subText && /* @__PURE__ */ jsx(
1367
+ Typography,
1368
+ {
1369
+ token: typography.subText,
1370
+ color: colour.text.subtext,
1371
+ children: subText
1372
+ }
1373
+ )
1374
+ ] })
1375
+ ]
1376
+ })
1377
+ );
1378
+ }
1379
+ );
1380
+ Switch.displayName = "Switch";
1381
+ var parseTokenValue14 = (value) => parseFloat(value);
1382
+ var StyledTag = styled25(View)(({ theme: theme2, tagVariant, tagSize }) => {
1383
+ const { sizing, spacing, colour, badge } = theme2.tokens.components.tags;
1384
+ const backgroundColorMap = {
1385
+ primary: colour.primary.background,
1386
+ secondary: colour.primary.secondary,
1387
+ tertiary: colour.primary.tertiery,
1388
+ promo: colour.primary.promo,
1389
+ success: colour.primary.success,
1390
+ warning: colour.primary.warning,
1391
+ error: colour.primary.error
1392
+ };
1393
+ return {
1394
+ flexDirection: "row",
1395
+ alignItems: "center",
1396
+ justifyContent: "center",
1397
+ height: parseTokenValue14(sizing[tagSize].height),
1398
+ minWidth: parseTokenValue14(sizing[tagSize].minWidth),
1399
+ paddingHorizontal: parseTokenValue14(spacing.horizontalPadding),
1400
+ gap: parseTokenValue14(spacing[tagSize].gap),
1401
+ borderRadius: parseTokenValue14(badge.borderRadius.default),
1402
+ backgroundColor: backgroundColorMap[tagVariant]
1403
+ };
1404
+ });
1405
+ var Tag = React26.forwardRef(
1406
+ (_a, ref) => {
1407
+ var _b = _a, { variant = "primary", size = "medium", icon, children } = _b, rest = __objRest(_b, ["variant", "size", "icon", "children"]);
1408
+ const theme2 = useTheme();
1409
+ const { typography, colour } = theme2.tokens.components.tags;
1410
+ const iconSizeMap = {
1411
+ small: "xs",
1412
+ medium: "xs",
1413
+ large: "sm"
1414
+ };
1415
+ const iconColourMap = {
1416
+ primary: "primary",
1417
+ secondary: "primary",
1418
+ tertiary: "primary",
1419
+ promo: "promo",
1420
+ success: "success",
1421
+ warning: "warning",
1422
+ error: "error"
1423
+ };
1424
+ const textColorMap = {
1425
+ primary: colour.text.default,
1426
+ secondary: colour.text.default,
1427
+ tertiary: colour.text.default,
1428
+ promo: colour.text.promo,
1429
+ success: colour.text.success,
1430
+ warning: colour.text.warning,
1431
+ error: colour.text.error
1432
+ };
1433
+ return /* @__PURE__ */ jsxs(StyledTag, __spreadProps(__spreadValues({ ref, tagVariant: variant, tagSize: size }, rest), { children: [
1434
+ icon && /* @__PURE__ */ jsx(
1435
+ Icon,
1436
+ {
1437
+ icon,
1438
+ size: iconSizeMap[size],
1439
+ colour: iconColourMap[variant]
1440
+ }
1441
+ ),
1442
+ /* @__PURE__ */ jsx(
1443
+ Typography,
1444
+ {
1445
+ token: typography[size].default,
1446
+ color: textColorMap[variant],
1447
+ children
1448
+ }
1449
+ )
1450
+ ] }));
1451
+ }
1452
+ );
1453
+ Tag.displayName = "Tag";
1454
+ var parseTokenValue15 = (value) => parseFloat(value);
1455
+ var StyledDockRoot = styled25(View)(
1456
+ ({
1457
+ dockBgColor,
1458
+ dockBorderTopWidth,
1459
+ dockBorderTopColor,
1460
+ dockPaddingVertical
1461
+ }) => ({
1462
+ alignItems: "center",
1463
+ justifyContent: "center",
1464
+ width: "100%",
1465
+ backgroundColor: dockBgColor,
1466
+ borderTopWidth: dockBorderTopWidth,
1467
+ borderTopColor: dockBorderTopColor,
1468
+ paddingVertical: dockPaddingVertical
1469
+ })
1470
+ );
1471
+ var StyledStackedInner = styled25(View)({
1472
+ alignItems: "center",
1473
+ gap: 16,
1474
+ width: "100%",
1475
+ maxWidth: 520
1476
+ });
1477
+ var StyledButtonGroup = styled25(View)(({ groupDirection, groupAlign, groupJustify, groupGap }) => __spreadValues({
1478
+ flexDirection: groupDirection,
1479
+ alignItems: groupAlign,
1480
+ justifyContent: groupJustify,
1481
+ gap: groupGap,
1482
+ width: "100%"
1483
+ }, groupDirection === "column" ? { maxWidth: 520 } : {}));
1484
+ var ButtonDock = React26.forwardRef(
1485
+ (_a, ref) => {
1486
+ var _b = _a, { variant = "stacked", leadingContent, description, children } = _b, rest = __objRest(_b, ["variant", "leadingContent", "description", "children"]);
1487
+ const theme2 = useTheme();
1488
+ const { buttonDock, buttonGroup } = theme2.tokens.components;
1489
+ const { dimensions } = theme2.tokens.semantics;
1490
+ const isStacked = variant === "stacked";
1491
+ const groupGap = parseTokenValue15(
1492
+ isStacked ? buttonGroup.spacing.stacked.gap : buttonGroup.spacing.sideBySide.gap
1493
+ );
1494
+ return /* @__PURE__ */ jsx(
1495
+ StyledDockRoot,
1496
+ __spreadProps(__spreadValues({
1497
+ ref,
1498
+ dockBgColor: buttonDock.colour.background,
1499
+ dockBorderTopWidth: parseTokenValue15(dimensions.borderWidth.sm),
1500
+ dockBorderTopColor: buttonDock.colour.border,
1501
+ dockPaddingVertical: parseTokenValue15(
1502
+ buttonDock.spacing[variant].desktop.verticalPadding
1503
+ )
1504
+ }, rest), {
1505
+ children: isStacked ? /* @__PURE__ */ jsxs(StyledStackedInner, { children: [
1506
+ leadingContent,
1507
+ /* @__PURE__ */ jsx(
1508
+ StyledButtonGroup,
1509
+ {
1510
+ groupDirection: "column",
1511
+ groupAlign: "stretch",
1512
+ groupJustify: "center",
1513
+ groupGap,
1514
+ children
1515
+ }
1516
+ ),
1517
+ description && /* @__PURE__ */ jsx(
1518
+ Typography,
1519
+ {
1520
+ variant: "body",
1521
+ size: "md",
1522
+ weight: "medium",
1523
+ align: "center",
1524
+ children: typeof description === "string" ? description : description
1525
+ }
1526
+ )
1527
+ ] }) : /* @__PURE__ */ jsx(
1528
+ StyledButtonGroup,
1529
+ {
1530
+ groupDirection: "row",
1531
+ groupAlign: "center",
1532
+ groupJustify: "space-around",
1533
+ groupGap,
1534
+ children
1535
+ }
1536
+ )
1537
+ })
1538
+ );
1539
+ }
1540
+ );
1541
+ ButtonDock.displayName = "ButtonDock";
1542
+ var parseTokenValue16 = (value) => parseFloat(value);
1543
+ var StyledGroupRoot = styled25(View)(({ rootGap }) => ({
1544
+ gap: rootGap,
1545
+ alignItems: "center",
1546
+ width: "100%"
1547
+ }));
1548
+ var StyledButtonRow = styled25(View)(({ rowDirection, rowAlign, rowGap }) => __spreadValues({
1549
+ flexDirection: rowDirection,
1550
+ width: "100%",
1551
+ gap: rowGap
1552
+ }, rowAlign ? { alignItems: rowAlign } : {}));
1553
+ var ButtonGroup = React26.forwardRef(
1554
+ (_a, ref) => {
1555
+ var _b = _a, { layout = "stacked", description, children } = _b, rest = __objRest(_b, ["layout", "description", "children"]);
1556
+ const theme2 = useTheme();
1557
+ const { buttonGroup } = theme2.tokens.components;
1558
+ const isInline = layout === "inline";
1559
+ return /* @__PURE__ */ jsxs(
1560
+ StyledGroupRoot,
1561
+ __spreadProps(__spreadValues({
1562
+ ref,
1563
+ accessibilityRole: "none",
1564
+ rootGap: parseTokenValue16(buttonGroup.spacing.gap)
1565
+ }, rest), {
1566
+ children: [
1567
+ /* @__PURE__ */ jsx(
1568
+ StyledButtonRow,
1569
+ {
1570
+ rowDirection: isInline ? "row-reverse" : "column",
1571
+ rowAlign: isInline ? "center" : void 0,
1572
+ rowGap: parseTokenValue16(
1573
+ isInline ? buttonGroup.spacing.sideBySide.gap : buttonGroup.spacing.stacked.gap
1574
+ ),
1575
+ children
1576
+ }
1577
+ ),
1578
+ description && /* @__PURE__ */ jsx(
1579
+ Typography,
1580
+ {
1581
+ token: buttonGroup.typography.description,
1582
+ color: buttonGroup.colour.text,
1583
+ align: "center",
1584
+ children: description
1585
+ }
1586
+ )
1587
+ ]
1588
+ })
1589
+ );
1590
+ }
1591
+ );
1592
+ ButtonGroup.displayName = "ButtonGroup";
1593
+
1594
+ // ../pawprint-icons/dist/chunk-N3ETBM74.js
1595
+ var __defProp2 = Object.defineProperty;
1596
+ var __defProps2 = Object.defineProperties;
1597
+ var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors;
1598
+ var __getOwnPropSymbols2 = Object.getOwnPropertySymbols;
1599
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
1600
+ var __propIsEnum2 = Object.prototype.propertyIsEnumerable;
1601
+ var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1602
+ var __spreadValues2 = (a, b) => {
1603
+ for (var prop in b || (b = {}))
1604
+ if (__hasOwnProp2.call(b, prop))
1605
+ __defNormalProp2(a, prop, b[prop]);
1606
+ if (__getOwnPropSymbols2)
1607
+ for (var prop of __getOwnPropSymbols2(b)) {
1608
+ if (__propIsEnum2.call(b, prop))
1609
+ __defNormalProp2(a, prop, b[prop]);
1610
+ }
1611
+ return a;
1612
+ };
1613
+ var __spreadProps2 = (a, b) => __defProps2(a, __getOwnPropDescs2(b));
1614
+ var Add = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M18 13h-5v5c0 .55-.45 1-1 1s-1-.45-1-1v-5H6c-.55 0-1-.45-1-1s.45-1 1-1h5V6c0-.55.45-1 1-1s1 .45 1 1v5h5c.55 0 1 .45 1 1s-.45 1-1 1" }) }));
1615
+ var ForwardRef = forwardRef(Add);
1616
+ ForwardRef.category = "core";
1617
+ var AddCircle = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m4 11h-3v3c0 .55-.45 1-1 1s-1-.45-1-1v-3H8c-.55 0-1-.45-1-1s.45-1 1-1h3V8c0-.55.45-1 1-1s1 .45 1 1v3h3c.55 0 1 .45 1 1s-.45 1-1 1" }) }));
1618
+ var ForwardRef2 = forwardRef(AddCircle);
1619
+ ForwardRef2.category = "core";
1620
+ var AddCircleOutline = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 7c-.55 0-1 .45-1 1v3H8c-.55 0-1 .45-1 1s.45 1 1 1h3v3c0 .55.45 1 1 1s1-.45 1-1v-3h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V8c0-.55-.45-1-1-1m0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8" }) }));
1621
+ var ForwardRef3 = forwardRef(AddCircleOutline);
1622
+ ForwardRef3.category = "core";
1623
+ var ArrowBack = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M19 11H7.83l4.88-4.88c.39-.39.39-1.03 0-1.42a.996.996 0 0 0-1.41 0l-6.59 6.59a.996.996 0 0 0 0 1.41l6.59 6.59a.996.996 0 1 0 1.41-1.41L7.83 13H19c.55 0 1-.45 1-1s-.45-1-1-1" }) }));
1624
+ var ForwardRef4 = forwardRef(ArrowBack);
1625
+ ForwardRef4.category = "core";
1626
+ var ArrowDownward = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0a.996.996 0 0 0 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59a.996.996 0 1 0-1.41-1.41L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1" }) }));
1627
+ var ForwardRef5 = forwardRef(ArrowDownward);
1628
+ ForwardRef5.category = "core";
1629
+ var ArrowDropDown = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "m8.71 11.71 2.59 2.59c.39.39 1.02.39 1.41 0l2.59-2.59c.63-.63.18-1.71-.71-1.71H9.41c-.89 0-1.33 1.08-.7 1.71" }) }));
1630
+ var ForwardRef6 = forwardRef(ArrowDropDown);
1631
+ ForwardRef6.category = "core";
1632
+ var ArrowDropUp = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71" }) }));
1633
+ var ForwardRef7 = forwardRef(ArrowDropUp);
1634
+ ForwardRef7.category = "core";
1635
+ var ArrowForward = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M5 13h11.17l-4.88 4.88c-.39.39-.39 1.03 0 1.42s1.02.39 1.41 0l6.59-6.59a.996.996 0 0 0 0-1.41l-6.58-6.6a.996.996 0 1 0-1.41 1.41L16.17 11H5c-.55 0-1 .45-1 1s.45 1 1 1" }) }));
1636
+ var ForwardRef8 = forwardRef(ArrowForward);
1637
+ ForwardRef8.category = "core";
1638
+ var ArrowLeft = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12.29 8.71 9.7 11.3a.996.996 0 0 0 0 1.41l2.59 2.59c.63.63 1.71.18 1.71-.71V9.41c0-.89-1.08-1.33-1.71-.7" }) }));
1639
+ var ForwardRef9 = forwardRef(ArrowLeft);
1640
+ ForwardRef9.category = "core";
1641
+ var ArrowRight = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "m11.71 15.29 2.59-2.59a.996.996 0 0 0 0-1.41L11.71 8.7c-.63-.62-1.71-.18-1.71.71v5.17c0 .9 1.08 1.34 1.71.71" }) }));
1642
+ var ForwardRef10 = forwardRef(ArrowRight);
1643
+ ForwardRef10.category = "core";
1644
+ var ArrowUpward = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M13 19V7.83l4.88 4.88c.39.39 1.03.39 1.42 0a.996.996 0 0 0 0-1.41l-6.59-6.59a.996.996 0 0 0-1.41 0l-6.6 6.58a.996.996 0 1 0 1.41 1.41L11 7.83V19c0 .55.45 1 1 1s1-.45 1-1" }) }));
1645
+ var ForwardRef11 = forwardRef(ArrowUpward);
1646
+ ForwardRef11.category = "core";
1647
+ var Autorenew = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 6v1.79c0 .45.54.67.85.35l2.79-2.79c.2-.2.2-.51 0-.71l-2.79-2.79a.5.5 0 0 0-.85.36V4c-4.42 0-8 3.58-8 8 0 1.04.2 2.04.57 2.95.27.67 1.13.85 1.64.34.27-.27.38-.68.23-1.04C6.15 13.56 6 12.79 6 12c0-3.31 2.69-6 6-6m5.79 2.71c-.27.27-.38.69-.23 1.04.28.7.44 1.46.44 2.25 0 3.31-2.69 6-6 6v-1.79c0-.45-.54-.67-.85-.35l-2.79 2.79c-.2.2-.2.51 0 .71l2.79 2.79a.5.5 0 0 0 .85-.35V20c4.42 0 8-3.58 8-8 0-1.04-.2-2.04-.57-2.95-.27-.67-1.13-.85-1.64-.34" }) }));
1648
+ var ForwardRef12 = forwardRef(Autorenew);
1649
+ ForwardRef12.category = "core";
1650
+ var Cancel = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m4.3 14.3a.996.996 0 0 1-1.41 0L12 13.41 9.11 16.3a.996.996 0 1 1-1.41-1.41L10.59 12 7.7 9.11A.996.996 0 1 1 9.11 7.7L12 10.59l2.89-2.89a.996.996 0 1 1 1.41 1.41L13.41 12l2.89 2.89c.38.38.38 1.02 0 1.41" }) }));
1651
+ var ForwardRef13 = forwardRef(Cancel);
1652
+ ForwardRef13.category = "core";
1653
+ var Check = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M9 16.17 5.53 12.7a.996.996 0 1 0-1.41 1.41l4.18 4.18c.39.39 1.02.39 1.41 0L20.29 7.71a.996.996 0 1 0-1.41-1.41z" }) }));
1654
+ var ForwardRef14 = forwardRef(Check);
1655
+ ForwardRef14.category = "core";
1656
+ var Check_default = ForwardRef14;
1657
+ var CheckCircle = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M9.29 16.29 5.7 12.7a.996.996 0 1 1 1.41-1.41L10 14.17l6.88-6.88a.996.996 0 1 1 1.41 1.41l-7.59 7.59a.996.996 0 0 1-1.41 0" }) }));
1658
+ var ForwardRef15 = forwardRef(CheckCircle);
1659
+ ForwardRef15.category = "core";
1660
+ var Close = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M18.3 5.71a.996.996 0 0 0-1.41 0L12 10.59 7.11 5.7A.996.996 0 1 0 5.7 7.11L10.59 12 5.7 16.89a.996.996 0 1 0 1.41 1.41L12 13.41l4.89 4.89a.996.996 0 1 0 1.41-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4" }) }));
1661
+ var ForwardRef16 = forwardRef(Close);
1662
+ ForwardRef16.category = "core";
1663
+ var Delete = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2zM18 4h-2.5l-.71-.71c-.18-.18-.44-.29-.7-.29H9.91c-.26 0-.52.11-.7.29L8.5 4H6c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1" }) }));
1664
+ var ForwardRef17 = forwardRef(Delete);
1665
+ ForwardRef17.category = "core";
1666
+ var DoDisturb = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31A7.9 7.9 0 0 1 12 20m6.31-3.1L7.1 5.69A7.9 7.9 0 0 1 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9" }) }));
1667
+ var ForwardRef18 = forwardRef(DoDisturb);
1668
+ ForwardRef18.category = "core";
1669
+ var Edit = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M3 17.46v3.04c0 .28.22.5.5.5h3.04c.13 0 .26-.05.35-.15L17.81 9.94l-3.75-3.75L3.15 17.1q-.15.15-.15.36M20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z" }) }));
1670
+ var ForwardRef19 = forwardRef(Edit);
1671
+ ForwardRef19.category = "core";
1672
+ var Error2 = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 11c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1m1 4h-2v-2h2z" }) }));
1673
+ var ForwardRef20 = forwardRef(Error2);
1674
+ ForwardRef20.category = "core";
1675
+ var ErrorOutline = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 7c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1s-1-.45-1-1V8c0-.55.45-1 1-1m-.01-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8m1-3h-2v-2h2z" }) }));
1676
+ var ForwardRef21 = forwardRef(ErrorOutline);
1677
+ ForwardRef21.category = "core";
1678
+ var Female = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 6c1.93 0 3.5 1.57 3.5 3.5S13.93 13 12 13s-3.5-1.57-3.5-3.5S10.07 6 12 6m1 8.91a5.5 5.5 0 0 0 4.5-5.41C17.5 6.46 15.04 4 12 4S6.5 6.46 6.5 9.5a5.5 5.5 0 0 0 4.5 5.41V17h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1s-.45-1-1-1h-1z" }) }));
1679
+ var ForwardRef22 = forwardRef(Female);
1680
+ ForwardRef22.category = "core";
1681
+ var FilterAlt = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M4.25 5.61C6.57 8.59 10 13 10 13v5c0 1.1.9 2 2 2s2-.9 2-2v-5s3.43-4.41 5.75-7.39c.51-.66.04-1.61-.8-1.61H5.04c-.83 0-1.3.95-.79 1.61" }) }));
1682
+ var ForwardRef23 = forwardRef(FilterAlt);
1683
+ ForwardRef23.category = "core";
1684
+ var HelpOutline = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m-1-4h2v2h-2zm1.61-9.96c-2.06-.3-3.88.97-4.43 2.79-.18.58.26 1.17.87 1.17h.2c.41 0 .74-.29.88-.67.32-.89 1.27-1.5 2.3-1.28.95.2 1.65 1.13 1.57 2.1-.1 1.34-1.62 1.63-2.45 2.88 0 .01-.01.01-.01.02-.01.02-.02.03-.03.05-.09.15-.18.32-.25.5-.01.03-.03.05-.04.08-.01.02-.01.04-.02.07-.12.34-.2.75-.2 1.25h2c0-.42.11-.77.28-1.07.02-.03.03-.06.05-.09.08-.14.18-.27.28-.39.01-.01.02-.03.03-.04.1-.12.21-.23.33-.34.96-.91 2.26-1.65 1.99-3.56-.24-1.74-1.61-3.21-3.35-3.47" }) }));
1685
+ var ForwardRef24 = forwardRef(HelpOutline);
1686
+ ForwardRef24.category = "core";
1687
+ var HighlightOff = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M13.89 8.7 12 10.59 10.11 8.7a.996.996 0 1 0-1.41 1.41L10.59 12 8.7 13.89a.996.996 0 1 0 1.41 1.41L12 13.41l1.89 1.89a.996.996 0 1 0 1.41-1.41L13.41 12l1.89-1.89a.996.996 0 0 0 0-1.41c-.39-.38-1.03-.38-1.41 0M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8" }) }));
1688
+ var ForwardRef25 = forwardRef(HighlightOff);
1689
+ ForwardRef25.category = "core";
1690
+ var Info = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 15c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1m1-8h-2V7h2z" }) }));
1691
+ var ForwardRef26 = forwardRef(Info);
1692
+ ForwardRef26.category = "core";
1693
+ var InfoOutline = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M11 7h2v2h-2zm1 10c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1m0-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8" }) }));
1694
+ var ForwardRef27 = forwardRef(InfoOutline);
1695
+ ForwardRef27.category = "core";
1696
+ var KeyboardArrowDown = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M8.12 9.29 12 13.17l3.88-3.88a.996.996 0 1 1 1.41 1.41l-4.59 4.59a.996.996 0 0 1-1.41 0L6.7 10.7a.996.996 0 0 1 0-1.41c.39-.38 1.03-.39 1.42 0" }) }));
1697
+ var ForwardRef28 = forwardRef(KeyboardArrowDown);
1698
+ ForwardRef28.category = "core";
1699
+ var KeyboardArrowLeft = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M14.71 15.88 10.83 12l3.88-3.88a.996.996 0 1 0-1.41-1.41L8.71 11.3a.996.996 0 0 0 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .38-.39.39-1.03 0-1.42" }) }));
1700
+ var ForwardRef29 = forwardRef(KeyboardArrowLeft);
1701
+ ForwardRef29.category = "core";
1702
+ var KeyboardArrowRight = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M9.29 15.88 13.17 12 9.29 8.12a.996.996 0 1 1 1.41-1.41l4.59 4.59c.39.39.39 1.02 0 1.41L10.7 17.3a.996.996 0 0 1-1.41 0c-.38-.39-.39-1.03 0-1.42" }) }));
1703
+ var ForwardRef30 = forwardRef(KeyboardArrowRight);
1704
+ ForwardRef30.category = "core";
1705
+ var KeyboardArrowUp = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M8.12 14.71 12 10.83l3.88 3.88a.996.996 0 1 0 1.41-1.41L12.7 8.71a.996.996 0 0 0-1.41 0L6.7 13.3a.996.996 0 0 0 0 1.41c.39.38 1.03.39 1.42 0" }) }));
1706
+ var ForwardRef31 = forwardRef(KeyboardArrowUp);
1707
+ ForwardRef31.category = "core";
1708
+ var KeyboardDoubleArrowDown = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { fillRule: "evenodd", d: "M6.702 12.282a.996.996 0 0 1 1.41 0l3.88 3.88 3.88-3.87a.996.996 0 0 1 1.41 0c.39.39.39 1.02.01 1.4l-4.59 4.59a.996.996 0 0 1-1.41 0l-4.59-4.59a.996.996 0 0 1 0-1.41m-.01-6.59a.995.995 0 0 1 1.41 0l3.89 3.88 3.88-3.87a.996.996 0 0 1 1.41 0c.39.39.39 1.02 0 1.4l-4.59 4.59a.997.997 0 0 1-1.41 0l-4.59-4.59a.995.995 0 0 1 0-1.41", clipRule: "evenodd" }) }));
1709
+ var ForwardRef32 = forwardRef(KeyboardDoubleArrowDown);
1710
+ ForwardRef32.category = "core";
1711
+ var KeyboardDoubleArrowLeft = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { fillRule: "evenodd", d: "M10.282 6.692a.996.996 0 1 1 1.41 1.41l-3.88 3.88 3.87 3.88c.39.39.39 1.02 0 1.41a.993.993 0 0 1-1.4.01l-4.59-4.59a.996.996 0 0 1 0-1.41zm6.59 0a.996.996 0 1 1 1.41 1.41l-3.88 3.88 3.87 3.88c.39.39.39 1.02 0 1.41a.993.993 0 0 1-1.4.01l-4.59-4.59a.996.996 0 0 1 0-1.41z", clipRule: "evenodd" }) }));
1712
+ var ForwardRef33 = forwardRef(KeyboardDoubleArrowLeft);
1713
+ ForwardRef33.category = "core";
1714
+ var KeyboardDoubleArrowRight = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { fillRule: "evenodd", d: "M5.692 6.693a1.01 1.01 0 0 1 1.421 0l4.58 4.58c.39.39.39 1.02 0 1.41l-4.59 4.59a.996.996 0 1 1-1.41-1.41l3.88-3.88-3.88-3.88a.997.997 0 0 1 0-1.41m6.591 0c.39-.39 1.03-.39 1.41-.01l4.59 4.59c.39.39.39 1.02 0 1.41l-4.59 4.59a.996.996 0 1 1-1.41-1.41l3.88-3.88-3.88-3.88a.996.996 0 0 1 0-1.41", clipRule: "evenodd" }) }));
1715
+ var ForwardRef34 = forwardRef(KeyboardDoubleArrowRight);
1716
+ ForwardRef34.category = "core";
1717
+ var KeyboardDoubleArrowUp = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { fillRule: "evenodd", d: "M11.282 12.282a.996.996 0 0 1 1.41 0l4.59 4.59a.996.996 0 1 1-1.41 1.41l-3.88-3.88-3.89 3.87a.995.995 0 0 1-1.41 0 .995.995 0 0 1 0-1.41zm0-6.59a.996.996 0 0 1 1.41 0l4.59 4.59a.996.996 0 1 1-1.41 1.41l-3.88-3.88-3.89 3.87a.996.996 0 1 1-1.41-1.41z", clipRule: "evenodd" }) }));
1718
+ var ForwardRef35 = forwardRef(KeyboardDoubleArrowUp);
1719
+ ForwardRef35.category = "core";
1720
+ var Language = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2m6.93 6h-2.95a15.7 15.7 0 0 0-1.38-3.56A8.03 8.03 0 0 1 18.92 8M12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96M4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A8 8 0 0 1 5.08 16m2.95-8H5.08a8 8 0 0 1 4.33-3.56A15.7 15.7 0 0 0 8.03 8M12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96M14.34 14H9.66c-.09-.66-.16-1.32-.16-2s.07-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2m.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 0 1-4.33 3.56M16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2z" }) }));
1721
+ var ForwardRef36 = forwardRef(Language);
1722
+ ForwardRef36.category = "core";
1723
+ var Lock = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2M9 8V6c0-1.66 1.34-3 3-3s3 1.34 3 3v2z" }) }));
1724
+ var ForwardRef37 = forwardRef(Lock);
1725
+ ForwardRef37.category = "core";
1726
+ var Male = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M19 4h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.58l-3.97 3.97C11.73 9.36 10.66 9 9.5 9 6.46 9 4 11.46 4 14.5S6.46 20 9.5 20s5.5-2.46 5.5-5.5c0-1.16-.36-2.23-.97-3.12L18 7.42V9c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1M9.5 18C7.57 18 6 16.43 6 14.5S7.57 11 9.5 11s3.5 1.57 3.5 3.5S11.43 18 9.5 18" }) }));
1727
+ var ForwardRef38 = forwardRef(Male);
1728
+ ForwardRef38.category = "core";
1729
+ var Menu = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M4 18h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1m0-5h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1M3 7c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1" }) }));
1730
+ var ForwardRef39 = forwardRef(Menu);
1731
+ ForwardRef39.category = "core";
1732
+ var MoreHoriz = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2" }) }));
1733
+ var ForwardRef40 = forwardRef(MoreHoriz);
1734
+ ForwardRef40.category = "core";
1735
+ var MoreVert = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2" }) }));
1736
+ var ForwardRef41 = forwardRef(MoreVert);
1737
+ ForwardRef41.category = "core";
1738
+ var Pause = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M8 19c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2m6-12v10c0 1.1.9 2 2 2s2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2" }) }));
1739
+ var ForwardRef42 = forwardRef(Pause);
1740
+ ForwardRef42.category = "core";
1741
+ var PlayArrow = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M8 6.82v10.36c0 .79.87 1.27 1.54.84l8.14-5.18a1 1 0 0 0 0-1.69L9.54 5.98A.998.998 0 0 0 8 6.82" }) }));
1742
+ var ForwardRef43 = forwardRef(PlayArrow);
1743
+ ForwardRef43.category = "core";
1744
+ var Refresh = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M17.65 6.35a7.95 7.95 0 0 0-6.48-2.31c-3.67.37-6.69 3.35-7.1 7.02C3.52 15.91 7.27 20 12 20a7.98 7.98 0 0 0 7.21-4.56c.32-.67-.16-1.44-.9-1.44-.37 0-.72.2-.88.53a5.994 5.994 0 0 1-6.8 3.31c-2.22-.49-4.01-2.3-4.48-4.52A6.002 6.002 0 0 1 12 6c1.66 0 3.14.69 4.22 1.78l-1.51 1.51c-.63.63-.19 1.71.7 1.71H19c.55 0 1-.45 1-1V6.41c0-.89-1.08-1.34-1.71-.71z" }) }));
1745
+ var ForwardRef44 = forwardRef(Refresh);
1746
+ ForwardRef44.category = "core";
1747
+ var Remove = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M18 13H6c-.55 0-1-.45-1-1s.45-1 1-1h12c.55 0 1 .45 1 1s-.45 1-1 1" }) }));
1748
+ var ForwardRef45 = forwardRef(Remove);
1749
+ ForwardRef45.category = "core";
1750
+ var RemoveCircle = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m4 11H8c-.55 0-1-.45-1-1s.45-1 1-1h8c.55 0 1 .45 1 1s-.45 1-1 1" }) }));
1751
+ var ForwardRef46 = forwardRef(RemoveCircle);
1752
+ ForwardRef46.category = "core";
1753
+ var RemoveCircleOutline = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M7 12c0 .55.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1m5-10C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8" }) }));
1754
+ var ForwardRef47 = forwardRef(RemoveCircleOutline);
1755
+ ForwardRef47.category = "core";
1756
+ var Search = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M15.5 14h-.79l-.28-.27a6.5 6.5 0 0 0 1.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 0 0-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 0 0 5.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0s.41-1.08 0-1.49zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14" }) }));
1757
+ var ForwardRef48 = forwardRef(Search);
1758
+ ForwardRef48.category = "core";
1759
+ var Settings = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M19.5 12c0-.23-.01-.45-.03-.68l1.86-1.41c.4-.3.51-.86.26-1.3l-1.87-3.23a.987.987 0 0 0-1.25-.42l-2.15.91c-.37-.26-.76-.49-1.17-.68l-.29-2.31c-.06-.5-.49-.88-.99-.88h-3.73c-.51 0-.94.38-1 .88l-.29 2.31c-.41.19-.8.42-1.17.68l-2.15-.91c-.46-.2-1-.02-1.25.42L2.41 8.62c-.25.44-.14.99.26 1.3l1.86 1.41a7.3 7.3 0 0 0 0 1.35l-1.86 1.41c-.4.3-.51.86-.26 1.3l1.87 3.23c.25.44.79.62 1.25.42l2.15-.91c.37.26.76.49 1.17.68l.29 2.31c.06.5.49.88.99.88h3.73c.5 0 .93-.38.99-.88l.29-2.31c.41-.19.8-.42 1.17-.68l2.15.91c.46.2 1 .02 1.25-.42l1.87-3.23c.25-.44.14-.99-.26-1.3l-1.86-1.41c.03-.23.04-.45.04-.68m-7.46 3.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5" }) }));
1760
+ var ForwardRef49 = forwardRef(Settings);
1761
+ ForwardRef49.category = "core";
1762
+ var StarBorder = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "m19.65 9.04-4.84-.42-1.89-4.45c-.34-.81-1.5-.81-1.84 0L9.19 8.63l-4.83.41c-.88.07-1.24 1.17-.57 1.75l3.67 3.18-1.1 4.72c-.2.86.73 1.54 1.49 1.08l4.15-2.5 4.15 2.51c.76.46 1.69-.22 1.49-1.08l-1.1-4.73 3.67-3.18c.67-.58.32-1.68-.56-1.75M12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28z" }) }));
1763
+ var ForwardRef50 = forwardRef(StarBorder);
1764
+ ForwardRef50.category = "core";
1765
+ var StarHalf = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "m19.65 9.04-4.84-.42-1.89-4.45c-.34-.81-1.5-.81-1.84 0L9.19 8.63l-4.83.41c-.88.07-1.24 1.17-.57 1.75l3.67 3.18-1.1 4.72c-.2.86.73 1.54 1.49 1.08l4.15-2.5 4.15 2.51c.76.46 1.69-.22 1.49-1.08l-1.1-4.73 3.67-3.18c.67-.58.32-1.68-.56-1.75M12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28z" }) }));
1766
+ var ForwardRef51 = forwardRef(StarHalf);
1767
+ ForwardRef51.category = "core";
1768
+ var StarRate = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "m11.957 17.498 4.15 2.51c.76.46 1.69-.22 1.49-1.08l-1.1-4.72 3.67-3.18c.67-.58.31-1.68-.57-1.75l-4.83-.41-1.89-4.46c-.34-.81-1.5-.81-1.84 0l-1.89 4.45-4.83.41c-.88.07-1.24 1.17-.57 1.75l3.67 3.18-1.1 4.72c-.2.86.73 1.54 1.49 1.08z" }) }));
1769
+ var ForwardRef52 = forwardRef(StarRate);
1770
+ ForwardRef52.category = "core";
1771
+ var Visibility = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3" }) }));
1772
+ var ForwardRef53 = forwardRef(Visibility);
1773
+ ForwardRef53.category = "core";
1774
+ var VisibilityOff = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M12 6.5c2.76 0 5 2.24 5 5 0 .51-.1 1-.24 1.46l3.06 3.06c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l2.17 2.17c.47-.14.96-.24 1.47-.24M2.71 3.16a.996.996 0 0 0 0 1.41l1.97 1.97A11.9 11.9 0 0 0 1 11.5C2.73 15.89 7 19 12 19c1.52 0 2.97-.3 4.31-.82l2.72 2.72a.996.996 0 1 0 1.41-1.41L4.13 3.16c-.39-.39-1.03-.39-1.42 0M12 16.5c-2.76 0-5-2.24-5-5 0-.77.18-1.5.49-2.14l1.57 1.57c-.03.18-.06.37-.06.57 0 1.66 1.34 3 3 3 .2 0 .38-.03.57-.07L14.14 16c-.65.32-1.37.5-2.14.5m2.97-5.33a2.97 2.97 0 0 0-2.64-2.64z" }) }));
1775
+ var ForwardRef54 = forwardRef(VisibilityOff);
1776
+ ForwardRef54.category = "core";
1777
+ var VolumeOff = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M3.63 3.63a.996.996 0 0 0 0 1.41L7.29 8.7 7 9H4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h3l3.29 3.29c.63.63 1.71.18 1.71-.71v-4.17l4.18 4.18c-.49.37-1.02.68-1.6.91-.36.15-.58.53-.58.92 0 .72.73 1.18 1.39.91.8-.33 1.55-.77 2.22-1.31l1.34 1.34a.996.996 0 1 0 1.41-1.41L5.05 3.63c-.39-.39-1.02-.39-1.42 0M19 12c0 .82-.15 1.61-.41 2.34l1.53 1.53c.56-1.17.88-2.48.88-3.87 0-3.83-2.4-7.11-5.78-8.4-.59-.23-1.22.23-1.22.86v.19c0 .38.25.71.61.85C17.18 6.54 19 9.06 19 12m-8.71-6.29-.17.17L12 7.76V6.41c0-.89-1.08-1.33-1.71-.7M16.5 12A4.5 4.5 0 0 0 14 7.97v1.79l2.48 2.48c.01-.08.02-.16.02-.24" }) }));
1778
+ var ForwardRef55 = forwardRef(VolumeOff);
1779
+ ForwardRef55.category = "core";
1780
+ var VolumeUp = (props, ref) => /* @__PURE__ */ jsx("svg", __spreadProps2(__spreadValues2({ xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", ref }, props), { children: /* @__PURE__ */ jsx("path", { d: "M3 10v4c0 .55.45 1 1 1h3l3.29 3.29c.63.63 1.71.18 1.71-.71V6.41c0-.89-1.08-1.34-1.71-.71L7 9H4c-.55 0-1 .45-1 1m13.5 2A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02M14 4.45v.2c0 .38.25.71.6.85A7 7 0 0 1 19 12c0 2.94-1.82 5.47-4.4 6.5-.36.14-.6.47-.6.85v.2c0 .63.63 1.07 1.21.85A8.98 8.98 0 0 0 21 12c0-3.84-2.4-7.11-5.79-8.4-.58-.23-1.21.22-1.21.85" }) }));
1781
+ var ForwardRef56 = forwardRef(VolumeUp);
1782
+ ForwardRef56.category = "core";
1783
+ var parseTokenValue17 = (value) => parseFloat(value);
1784
+ var StyledRoot5 = styled25(CheckboxPrimitive.Root)(
1785
+ ({
1786
+ rootFlexAlign,
1787
+ rootGap,
1788
+ rootOpacity,
1789
+ rootPaddingVertical,
1790
+ rootPaddingHorizontal,
1791
+ rootMaxWidth,
1792
+ rootBgColor,
1793
+ rootBorderWidth,
1794
+ rootBorderColor,
1795
+ rootBorderRadius
1796
+ }) => __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
1797
+ flexDirection: "row",
1798
+ alignItems: rootFlexAlign,
1799
+ gap: rootGap,
1800
+ opacity: rootOpacity
1801
+ }, rootPaddingVertical !== void 0 ? { paddingVertical: rootPaddingVertical } : {}), rootPaddingHorizontal !== void 0 ? { paddingHorizontal: rootPaddingHorizontal } : {}), rootMaxWidth !== void 0 ? { maxWidth: rootMaxWidth, width: "100%" } : {}), rootBgColor ? { backgroundColor: rootBgColor } : {}), rootBorderWidth !== void 0 ? { borderWidth: rootBorderWidth, borderColor: rootBorderColor } : {}), rootBorderRadius !== void 0 ? { borderRadius: rootBorderRadius } : {})
1802
+ );
1803
+ var StyledControl2 = styled25(View)(
1804
+ ({
1805
+ controlSize,
1806
+ controlBorderWidth,
1807
+ controlBorderColor,
1808
+ controlBorderRadius,
1809
+ controlBgColor
1810
+ }) => ({
1811
+ flexShrink: 0,
1812
+ width: controlSize,
1813
+ height: controlSize,
1814
+ borderWidth: controlBorderWidth,
1815
+ borderColor: controlBorderColor,
1816
+ borderRadius: controlBorderRadius,
1817
+ backgroundColor: controlBgColor,
1818
+ alignItems: "center",
1819
+ justifyContent: "center"
1820
+ })
1821
+ );
1822
+ var StyledContent2 = styled25(View)(({ contentGap }) => ({
1823
+ flexDirection: "column",
1824
+ gap: contentGap,
1825
+ flex: 1,
1826
+ minWidth: 0
1827
+ }));
1828
+ var StyledIllustration = styled25(View)(({ illustrationSize }) => ({
1829
+ flexShrink: 0,
1830
+ width: illustrationSize,
1831
+ height: illustrationSize,
1832
+ overflow: "hidden"
1833
+ }));
1834
+ var Checkbox = React26.forwardRef(
1835
+ (_a, ref) => {
1836
+ var _b = _a, {
1837
+ variant = "standalone",
1838
+ label,
1839
+ subText,
1840
+ illustration,
1841
+ checked: controlledChecked,
1842
+ defaultChecked = false,
1843
+ onCheckedChange,
1844
+ disabled = false,
1845
+ style
1846
+ } = _b, rest = __objRest(_b, [
1847
+ "variant",
1848
+ "label",
1849
+ "subText",
1850
+ "illustration",
1851
+ "checked",
1852
+ "defaultChecked",
1853
+ "onCheckedChange",
1854
+ "disabled",
1855
+ "style"
1856
+ ]);
1857
+ const theme2 = useTheme();
1858
+ const { checkbox } = theme2.tokens.components;
1859
+ const { dimensions } = theme2.tokens.semantics;
1860
+ const isControlled = controlledChecked !== void 0;
1861
+ const [internalChecked, setInternalChecked] = React26.useState(defaultChecked);
1862
+ const isChecked = isControlled ? controlledChecked : internalChecked;
1863
+ const handleCheckedChange = (checked) => {
1864
+ if (!isControlled) {
1865
+ setInternalChecked(checked);
1866
+ }
1867
+ onCheckedChange == null ? void 0 : onCheckedChange(checked);
1868
+ };
1869
+ const isTile = variant === "tile";
1870
+ const controlSize = parseTokenValue17(checkbox.size.control.default);
1871
+ return /* @__PURE__ */ jsxs(
1872
+ StyledRoot5,
1873
+ __spreadProps(__spreadValues({
1874
+ ref,
1875
+ checked: isChecked,
1876
+ onCheckedChange: handleCheckedChange,
1877
+ disabled,
1878
+ rootFlexAlign: isTile ? "center" : "flex-start",
1879
+ rootGap: parseTokenValue17(
1880
+ isTile ? checkbox.checkboxTile.spacing.gap : checkbox.spacing.gap
1881
+ ),
1882
+ rootOpacity: disabled ? parseFloat(theme2.tokens.primitives.opacity["40"]) : 1,
1883
+ rootPaddingVertical: isTile ? parseTokenValue17(checkbox.checkboxTile.spacing.verticalPadding) : void 0,
1884
+ rootPaddingHorizontal: isTile ? parseTokenValue17(checkbox.checkboxTile.spacing.horizontalPadding) : void 0,
1885
+ rootMaxWidth: isTile ? parseTokenValue17(checkbox.checkboxTile.size.maxWidth) : void 0,
1886
+ rootBgColor: isTile ? isChecked ? checkbox.checkboxTile.colour.background.selected : checkbox.checkboxTile.colour.background.default : void 0,
1887
+ rootBorderWidth: isTile ? parseTokenValue17(checkbox.checkboxTile.borderWidth.default) : void 0,
1888
+ rootBorderColor: isTile ? isChecked ? checkbox.checkboxTile.colour.border.selected : checkbox.checkboxTile.colour.border.default : void 0,
1889
+ rootBorderRadius: isTile ? parseTokenValue17(checkbox.checkboxTile.borderRadius.default) : void 0,
1890
+ style: typeof style === "function" ? void 0 : style
1891
+ }, rest), {
1892
+ children: [
1893
+ /* @__PURE__ */ jsx(
1894
+ StyledControl2,
1895
+ {
1896
+ controlSize,
1897
+ controlBorderWidth: parseTokenValue17(checkbox.control.border.default),
1898
+ controlBorderColor: isChecked ? checkbox.colour.background.selected : checkbox.colour.border.default,
1899
+ controlBorderRadius: parseTokenValue17(dimensions.borderRadius.xs),
1900
+ controlBgColor: isChecked ? checkbox.colour.background.selected : "transparent",
1901
+ children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, { children: /* @__PURE__ */ jsx(Icon, { icon: Check_default, size: "xs", colour: "alt" }) })
1902
+ }
1903
+ ),
1904
+ /* @__PURE__ */ jsxs(
1905
+ StyledContent2,
1906
+ {
1907
+ contentGap: parseTokenValue17(checkbox.spacing.content.gap),
1908
+ children: [
1909
+ label && /* @__PURE__ */ jsx(
1910
+ Typography,
1911
+ {
1912
+ token: checkbox.typography.label,
1913
+ color: checkbox.colour.text.title,
1914
+ children: label
1915
+ }
1916
+ ),
1917
+ subText && /* @__PURE__ */ jsx(
1918
+ Typography,
1919
+ {
1920
+ token: checkbox.typography.subText,
1921
+ color: checkbox.colour.text.subtext,
1922
+ children: subText
1923
+ }
1924
+ )
1925
+ ]
1926
+ }
1927
+ ),
1928
+ isTile && illustration && /* @__PURE__ */ jsx(
1929
+ StyledIllustration,
1930
+ {
1931
+ illustrationSize: parseTokenValue17(
1932
+ checkbox.checkboxTile.size.illustration.default
1933
+ ),
1934
+ children: illustration
1935
+ }
1936
+ )
1937
+ ]
1938
+ })
1939
+ );
1940
+ }
1941
+ );
1942
+ Checkbox.displayName = "Checkbox";
1943
+ var parseTokenValue18 = (value) => parseFloat(value);
1944
+ var StyledGroup = styled25(View)(({ groupDirection, groupGap }) => ({
1945
+ flexDirection: groupDirection,
1946
+ gap: groupGap
1947
+ }));
1948
+ var CheckboxGroup = React26.forwardRef(
1949
+ (_a, ref) => {
1950
+ var _b = _a, { orientation = "vertical", children } = _b, rest = __objRest(_b, ["orientation", "children"]);
1951
+ const theme2 = useTheme();
1952
+ const { checkbox } = theme2.tokens.components;
1953
+ return /* @__PURE__ */ jsx(
1954
+ StyledGroup,
1955
+ __spreadProps(__spreadValues({
1956
+ ref,
1957
+ groupDirection: orientation === "horizontal" ? "row" : "column",
1958
+ groupGap: parseTokenValue18(checkbox.spacing.gap)
1959
+ }, rest), {
1960
+ children
1961
+ })
1962
+ );
1963
+ }
1964
+ );
1965
+ CheckboxGroup.displayName = "CheckboxGroup";
1966
+ var parseTokenValue19 = (value) => parseFloat(value);
1967
+ var StyledRadioRoot = styled25(Pressable)(
1968
+ ({
1969
+ radioGap,
1970
+ radioOpacity,
1971
+ radioPaddingVertical,
1972
+ radioPaddingHorizontal,
1973
+ radioMaxWidth,
1974
+ radioBgColor,
1975
+ radioBorderWidth,
1976
+ radioBorderColor,
1977
+ radioBorderRadius
1978
+ }) => __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
1979
+ flexDirection: "row",
1980
+ alignItems: "flex-start",
1981
+ width: "100%",
1982
+ gap: radioGap,
1983
+ opacity: radioOpacity
1984
+ }, radioPaddingVertical !== void 0 ? { paddingVertical: radioPaddingVertical } : {}), radioPaddingHorizontal !== void 0 ? { paddingHorizontal: radioPaddingHorizontal } : {}), radioMaxWidth !== void 0 ? { maxWidth: radioMaxWidth } : {}), radioBgColor ? { backgroundColor: radioBgColor } : {}), radioBorderWidth !== void 0 ? { borderWidth: radioBorderWidth, borderColor: radioBorderColor } : {}), radioBorderRadius !== void 0 ? { borderRadius: radioBorderRadius } : {})
1985
+ );
1986
+ var StyledRadioControl = styled25(View)(({ controlSize, controlBorderWidth, controlBorderColor }) => ({
1987
+ width: controlSize,
1988
+ height: controlSize,
1989
+ minWidth: controlSize,
1990
+ minHeight: controlSize,
1991
+ borderWidth: controlBorderWidth,
1992
+ borderColor: controlBorderColor,
1993
+ borderRadius: controlSize / 2,
1994
+ alignItems: "center",
1995
+ justifyContent: "center"
1996
+ }));
1997
+ var StyledIndicator = styled25(View)(({ indicatorSize, indicatorBgColor }) => ({
1998
+ width: indicatorSize,
1999
+ height: indicatorSize,
2000
+ borderRadius: indicatorSize / 2,
2001
+ backgroundColor: indicatorBgColor
2002
+ }));
2003
+ var StyledTextContent = styled25(View)(({ textContentGap }) => ({
2004
+ flexDirection: "column",
2005
+ gap: textContentGap,
2006
+ marginTop: 2
2007
+ }));
2008
+ var StyledAssetWrapper = styled25(View)({
2009
+ alignSelf: "center"
2010
+ });
2011
+ var Radio = React26.forwardRef(
2012
+ (_a, ref) => {
2013
+ var _b = _a, {
2014
+ variant = "standalone",
2015
+ label,
2016
+ subText,
2017
+ asset,
2018
+ disabled = false,
2019
+ value,
2020
+ selected = false,
2021
+ onSelect,
2022
+ style
2023
+ } = _b, rest = __objRest(_b, [
2024
+ "variant",
2025
+ "label",
2026
+ "subText",
2027
+ "asset",
2028
+ "disabled",
2029
+ "value",
2030
+ "selected",
2031
+ "onSelect",
2032
+ "style"
2033
+ ]);
2034
+ const theme2 = useTheme();
2035
+ const { radio } = theme2.tokens.components;
2036
+ const { spacing, typography, colour } = radio;
2037
+ const handlePress = () => {
2038
+ if (disabled) return;
2039
+ onSelect == null ? void 0 : onSelect(value);
2040
+ };
2041
+ const controlSize = parseTokenValue19(radio.size.control.default);
2042
+ const indicatorSize = parseTokenValue19(radio.size.indicator.default);
2043
+ const borderWidthVal = parseTokenValue19(radio.borderWidth.default);
2044
+ const isTile = variant === "tile";
2045
+ return /* @__PURE__ */ jsxs(
2046
+ StyledRadioRoot,
2047
+ __spreadProps(__spreadValues({
2048
+ ref,
2049
+ onPress: handlePress,
2050
+ disabled,
2051
+ accessibilityRole: "radio",
2052
+ accessibilityState: { selected, disabled },
2053
+ radioGap: parseTokenValue19(
2054
+ isTile ? radio.radioTile.spacing.gap : spacing.gap
2055
+ ),
2056
+ radioOpacity: disabled ? parseFloat(radio.opacity.disabled) : 1,
2057
+ radioPaddingVertical: isTile ? parseTokenValue19(radio.radioTile.spacing.verticalPadding) : void 0,
2058
+ radioPaddingHorizontal: isTile ? parseTokenValue19(radio.radioTile.spacing.horizontalPadding) : void 0,
2059
+ radioMaxWidth: isTile ? parseTokenValue19(radio.radioTile.size.maxWidth) : void 0,
2060
+ radioBgColor: isTile ? selected ? radio.radioTile.colour.background.selected : radio.radioTile.colour.background.default : void 0,
2061
+ radioBorderWidth: isTile ? parseTokenValue19(radio.radioTile.borderWidth.default) : void 0,
2062
+ radioBorderColor: isTile ? selected ? radio.radioTile.colour.border.selected : radio.radioTile.colour.border.default : void 0,
2063
+ radioBorderRadius: isTile ? parseTokenValue19(radio.radioTile.borderRadius.default) : void 0,
2064
+ style: typeof style === "function" ? void 0 : style
2065
+ }, rest), {
2066
+ children: [
2067
+ /* @__PURE__ */ jsx(
2068
+ StyledRadioControl,
2069
+ {
2070
+ controlSize,
2071
+ controlBorderWidth: borderWidthVal,
2072
+ controlBorderColor: selected ? radio.colour.control.border.selected : radio.colour.control.border.default,
2073
+ children: selected && /* @__PURE__ */ jsx(
2074
+ StyledIndicator,
2075
+ {
2076
+ indicatorSize,
2077
+ indicatorBgColor: radio.colour.indicator.background.selected
2078
+ }
2079
+ )
2080
+ }
2081
+ ),
2082
+ (label || subText) && /* @__PURE__ */ jsxs(
2083
+ StyledTextContent,
2084
+ {
2085
+ textContentGap: parseTokenValue19(spacing.content.gap),
2086
+ children: [
2087
+ label && /* @__PURE__ */ jsx(Typography, { token: typography.label, color: colour.text.title, children: label }),
2088
+ subText && /* @__PURE__ */ jsx(
2089
+ Typography,
2090
+ {
2091
+ token: typography.subText,
2092
+ color: colour.text.subtext,
2093
+ children: subText
2094
+ }
2095
+ )
2096
+ ]
2097
+ }
2098
+ ),
2099
+ isTile && asset && /* @__PURE__ */ jsx(StyledAssetWrapper, { children: /* @__PURE__ */ jsx(Illustration, __spreadValues({}, asset)) })
2100
+ ]
2101
+ })
2102
+ );
2103
+ }
2104
+ );
2105
+ Radio.displayName = "Radio";
2106
+ var parseTokenValue20 = (value) => parseFloat(value);
2107
+ var StyledRadioGroup = styled25(View)(({ groupDirection, groupGap }) => ({
2108
+ flexDirection: groupDirection,
2109
+ gap: groupGap
2110
+ }));
2111
+ var RadioGroupRoot = React26.forwardRef(
2112
+ (_a, ref) => {
2113
+ var _b = _a, {
2114
+ name: _name,
2115
+ options,
2116
+ orientation = "vertical",
2117
+ value,
2118
+ defaultValue,
2119
+ onValueChange,
2120
+ disabled = false,
2121
+ children
2122
+ } = _b, rest = __objRest(_b, [
2123
+ "name",
2124
+ "options",
2125
+ "orientation",
2126
+ "value",
2127
+ "defaultValue",
2128
+ "onValueChange",
2129
+ "disabled",
2130
+ "children"
2131
+ ]);
2132
+ var _a2;
2133
+ const theme2 = useTheme();
2134
+ const { radio } = theme2.tokens.components;
2135
+ const optionsFirstValue = (_a2 = options == null ? void 0 : options[0]) == null ? void 0 : _a2.value;
2136
+ const derivedDefaultValue = defaultValue != null ? defaultValue : optionsFirstValue;
2137
+ const isControlled = value !== void 0;
2138
+ const [internalValue, setInternalValue] = React26.useState(
2139
+ derivedDefaultValue != null ? derivedDefaultValue : ""
2140
+ );
2141
+ const currentValue = isControlled ? value : internalValue;
2142
+ const handleSelect = React26.useCallback(
2143
+ (newValue) => {
2144
+ if (!isControlled) {
2145
+ setInternalValue(newValue);
2146
+ }
2147
+ onValueChange == null ? void 0 : onValueChange(newValue);
2148
+ },
2149
+ [isControlled, onValueChange]
2150
+ );
2151
+ const renderChildren = () => {
2152
+ if (options) {
2153
+ return options.map((option) => /* @__PURE__ */ jsx(
2154
+ Radio,
2155
+ __spreadProps(__spreadValues({}, option), {
2156
+ selected: currentValue === option.value,
2157
+ onSelect: handleSelect,
2158
+ disabled: disabled || option.disabled
2159
+ }),
2160
+ option.value
2161
+ ));
2162
+ }
2163
+ return React26.Children.map(children, (child) => {
2164
+ if (!React26.isValidElement(child)) return child;
2165
+ return React26.cloneElement(child, {
2166
+ selected: currentValue === child.props.value,
2167
+ onSelect: handleSelect,
2168
+ disabled: disabled || child.props.disabled
2169
+ });
2170
+ });
2171
+ };
2172
+ return /* @__PURE__ */ jsx(
2173
+ StyledRadioGroup,
2174
+ __spreadProps(__spreadValues({
2175
+ ref,
2176
+ accessibilityRole: "radiogroup",
2177
+ groupDirection: orientation === "horizontal" ? "row" : "column",
2178
+ groupGap: parseTokenValue20(radio.spacing.gap)
2179
+ }, rest), {
2180
+ children: renderChildren()
2181
+ })
2182
+ );
2183
+ }
2184
+ );
2185
+ RadioGroupRoot.displayName = "RadioGroup";
2186
+ var RadioGroup = Object.assign(RadioGroupRoot, {
2187
+ Radio
2188
+ });
2189
+ var parseTokenValue21 = (value) => parseFloat(value);
2190
+ var StyledSegmentItem = styled25(Pressable)(
2191
+ ({
2192
+ itemHeight,
2193
+ itemMinWidth,
2194
+ itemPaddingVertical,
2195
+ itemPaddingHorizontal,
2196
+ itemBorderRadius,
2197
+ itemBgColor,
2198
+ itemOpacity,
2199
+ itemFlex
2200
+ }) => __spreadValues({
2201
+ height: itemHeight,
2202
+ minWidth: itemMinWidth,
2203
+ paddingVertical: itemPaddingVertical,
2204
+ paddingHorizontal: itemPaddingHorizontal,
2205
+ borderRadius: itemBorderRadius,
2206
+ alignItems: "center",
2207
+ justifyContent: "center",
2208
+ backgroundColor: itemBgColor,
2209
+ opacity: itemOpacity
2210
+ }, itemFlex !== void 0 ? { flex: itemFlex } : { flexShrink: 0 })
2211
+ );
2212
+ var StyledContainer2 = styled25(View)(
2213
+ ({
2214
+ containerGap,
2215
+ containerPaddingVertical,
2216
+ containerPaddingHorizontal,
2217
+ containerBorderRadius,
2218
+ containerBgColor,
2219
+ containerFullWidth
2220
+ }) => __spreadValues({
2221
+ flexDirection: "row",
2222
+ alignItems: "stretch",
2223
+ gap: containerGap,
2224
+ paddingVertical: containerPaddingVertical,
2225
+ paddingHorizontal: containerPaddingHorizontal,
2226
+ borderRadius: containerBorderRadius,
2227
+ backgroundColor: containerBgColor
2228
+ }, containerFullWidth ? { width: "100%" } : {})
2229
+ );
2230
+ var SegmentedControlItemBase = ({
2231
+ value,
2232
+ disabled = false,
2233
+ selected = false,
2234
+ layout,
2235
+ onSelect,
2236
+ children,
2237
+ theme: theme2
2238
+ }) => {
2239
+ const { controlItem } = theme2.tokens.components.segmentedControl;
2240
+ const { size, spacing, borderRadius, colour, opacity } = controlItem;
2241
+ const { typography } = controlItem;
2242
+ const handlePress = () => {
2243
+ if (disabled) return;
2244
+ onSelect == null ? void 0 : onSelect(value);
2245
+ };
2246
+ const { token, color } = selected ? {
2247
+ token: typography.label.default,
2248
+ color: colour.text.selected
2249
+ } : {
2250
+ token: typography.label.inactive,
2251
+ color: colour.text.unselected
2252
+ };
2253
+ return /* @__PURE__ */ jsx(
2254
+ StyledSegmentItem,
2255
+ {
2256
+ onPress: handlePress,
2257
+ disabled,
2258
+ accessibilityRole: "button",
2259
+ accessibilityState: { selected, disabled },
2260
+ itemHeight: parseTokenValue21(size.small.height),
2261
+ itemMinWidth: parseTokenValue21(size.small.minWidth),
2262
+ itemPaddingVertical: parseTokenValue21(spacing.verticalPadding),
2263
+ itemPaddingHorizontal: parseTokenValue21(spacing.horizontalPadding),
2264
+ itemBorderRadius: parseTokenValue21(borderRadius.default),
2265
+ itemBgColor: selected ? colour.background.selected : "transparent",
2266
+ itemOpacity: disabled ? parseFloat(opacity.disabled.default) : 1,
2267
+ itemFlex: layout === "fixed" ? 1 : void 0,
2268
+ children: /* @__PURE__ */ jsx(Typography, { token, color, children })
2269
+ }
2270
+ );
2271
+ };
2272
+ var SegmentedControlItem = React26.forwardRef(
2273
+ (_props, _ref) => {
2274
+ return null;
2275
+ }
2276
+ );
2277
+ SegmentedControlItem.displayName = "SegmentedControl.Item";
2278
+ var SegmentedControlRoot = React26.forwardRef(
2279
+ (_a, ref) => {
2280
+ var _b = _a, {
2281
+ options,
2282
+ value,
2283
+ defaultValue,
2284
+ onValueChange,
2285
+ layout = "intrinsic",
2286
+ disabled = false,
2287
+ children
2288
+ } = _b, rest = __objRest(_b, [
2289
+ "options",
2290
+ "value",
2291
+ "defaultValue",
2292
+ "onValueChange",
2293
+ "layout",
2294
+ "disabled",
2295
+ "children"
2296
+ ]);
2297
+ var _a2, _b2;
2298
+ const theme2 = useTheme();
2299
+ const { spacing, borderRadius, colour } = theme2.tokens.components.segmentedControl;
2300
+ const optionsFirstValue = (_a2 = options == null ? void 0 : options[0]) == null ? void 0 : _a2.value;
2301
+ const childrenArray = React26.Children.toArray(children);
2302
+ const firstChildValue = childrenArray.map((child) => {
2303
+ if (!React26.isValidElement(child)) return void 0;
2304
+ return child.props.value;
2305
+ }).find((v) => typeof v === "string");
2306
+ const derivedDefaultValue = (_b2 = defaultValue != null ? defaultValue : optionsFirstValue) != null ? _b2 : firstChildValue;
2307
+ const isControlled = typeof value === "string";
2308
+ const [uncontrolledValue, setUncontrolledValue] = React26.useState(
2309
+ () => derivedDefaultValue != null ? derivedDefaultValue : ""
2310
+ );
2311
+ const currentValue = isControlled ? value : uncontrolledValue;
2312
+ const handleSelect = React26.useCallback(
2313
+ (newValue) => {
2314
+ if (!isControlled) {
2315
+ setUncontrolledValue(newValue);
2316
+ }
2317
+ onValueChange == null ? void 0 : onValueChange(newValue);
2318
+ },
2319
+ [isControlled, onValueChange]
2320
+ );
2321
+ const renderItems = () => {
2322
+ if (options) {
2323
+ return options.map((option) => /* @__PURE__ */ jsx(
2324
+ SegmentedControlItemBase,
2325
+ {
2326
+ value: option.value,
2327
+ disabled: disabled || option.disabled,
2328
+ selected: currentValue === option.value,
2329
+ layout,
2330
+ onSelect: handleSelect,
2331
+ theme: theme2,
2332
+ children: option.label
2333
+ },
2334
+ option.value
2335
+ ));
2336
+ }
2337
+ return childrenArray.map((child) => {
2338
+ if (!React26.isValidElement(child)) return child;
2339
+ const childProps = child.props;
2340
+ return /* @__PURE__ */ jsx(
2341
+ SegmentedControlItemBase,
2342
+ {
2343
+ value: childProps.value,
2344
+ disabled: disabled || childProps.disabled,
2345
+ selected: currentValue === childProps.value,
2346
+ layout,
2347
+ onSelect: handleSelect,
2348
+ theme: theme2,
2349
+ children: childProps.children
2350
+ },
2351
+ childProps.value
2352
+ );
2353
+ });
2354
+ };
2355
+ const containerProps = {
2356
+ containerGap: parseTokenValue21(spacing.gap),
2357
+ containerPaddingVertical: parseTokenValue21(spacing.verticalPadding),
2358
+ containerPaddingHorizontal: parseTokenValue21(spacing.horizontalPadding),
2359
+ containerBorderRadius: parseTokenValue21(borderRadius.default),
2360
+ containerBgColor: colour.background.default,
2361
+ containerFullWidth: layout === "fixed"
2362
+ };
2363
+ if (layout === "intrinsic") {
2364
+ return /* @__PURE__ */ jsx(View, __spreadProps(__spreadValues({ ref }, rest), { children: /* @__PURE__ */ jsx(
2365
+ ScrollView,
2366
+ {
2367
+ horizontal: true,
2368
+ showsHorizontalScrollIndicator: false,
2369
+ contentContainerStyle: {
2370
+ flexDirection: "row",
2371
+ alignItems: "stretch",
2372
+ gap: containerProps.containerGap,
2373
+ paddingVertical: containerProps.containerPaddingVertical,
2374
+ paddingHorizontal: containerProps.containerPaddingHorizontal,
2375
+ borderRadius: containerProps.containerBorderRadius,
2376
+ backgroundColor: containerProps.containerBgColor
2377
+ },
2378
+ children: renderItems()
2379
+ }
2380
+ ) }));
2381
+ }
2382
+ return /* @__PURE__ */ jsx(StyledContainer2, __spreadProps(__spreadValues(__spreadValues({ ref }, containerProps), rest), { children: renderItems() }));
2383
+ }
2384
+ );
2385
+ SegmentedControlRoot.displayName = "SegmentedControl";
2386
+ var SegmentedControl = Object.assign(SegmentedControlRoot, {
2387
+ Item: SegmentedControlItem
2388
+ });
2389
+ var parseTokenValue22 = (value) => parseFloat(value);
2390
+ var clamp = (val, min, max) => Math.min(Math.max(val, min), max);
2391
+ var snap = (val, step, min) => {
2392
+ const steps = Math.round((val - min) / step);
2393
+ return min + steps * step;
2394
+ };
2395
+ var StyledSliderRoot = styled25(SliderPrimitive.Root)(({ sliderGap, sliderMinWidth, sliderOpacity }) => ({
2396
+ gap: sliderGap,
2397
+ minWidth: sliderMinWidth,
2398
+ opacity: sliderOpacity
2399
+ }));
2400
+ var StyledLabelRow2 = styled25(View)(({ labelRowGap }) => ({
2401
+ flexDirection: "row",
2402
+ alignItems: "center",
2403
+ gap: labelRowGap
2404
+ }));
2405
+ var StyledLabelSlot = styled25(View)(({ labelSlotGap }) => ({
2406
+ flexDirection: "row",
2407
+ alignItems: "center",
2408
+ gap: labelSlotGap,
2409
+ flexShrink: 0
2410
+ }));
2411
+ var StyledTrackArea = styled25(View)(({ trackAreaHeight }) => ({
2412
+ flex: 1,
2413
+ height: trackAreaHeight,
2414
+ justifyContent: "center"
2415
+ }));
2416
+ var StyledTrack = styled25(SliderPrimitive.Track)(
2417
+ ({
2418
+ trackHeight,
2419
+ trackBorderRadius,
2420
+ trackBgColor,
2421
+ trackBorderWidth,
2422
+ trackBorderColor
2423
+ }) => ({
2424
+ height: trackHeight,
2425
+ borderRadius: trackBorderRadius,
2426
+ backgroundColor: trackBgColor,
2427
+ borderWidth: trackBorderWidth,
2428
+ borderColor: trackBorderColor,
2429
+ overflow: "hidden"
2430
+ })
2431
+ );
2432
+ var StyledRange = styled25(SliderPrimitive.Range)(({ rangeBgColor, rangeBorderRadius }) => ({
2433
+ height: "100%",
2434
+ backgroundColor: rangeBgColor,
2435
+ borderRadius: rangeBorderRadius
2436
+ }));
2437
+ var StyledThumb2 = styled25(SliderPrimitive.Thumb)(({ thumbSize, thumbBorderRadius, thumbBgColor }) => ({
2438
+ position: "absolute",
2439
+ width: thumbSize,
2440
+ height: thumbSize,
2441
+ borderRadius: thumbBorderRadius,
2442
+ backgroundColor: thumbBgColor,
2443
+ alignItems: "center",
2444
+ justifyContent: "center"
2445
+ }));
2446
+ var Slider = React26.forwardRef(
2447
+ (_a, ref) => {
2448
+ var _b = _a, {
2449
+ value: controlledValue,
2450
+ defaultValue = 0,
2451
+ onValueChange,
2452
+ onValueCommitted,
2453
+ min = 0,
2454
+ max = 100,
2455
+ step = 1,
2456
+ disabled = false,
2457
+ leadingLabel,
2458
+ trailingLabel,
2459
+ leadingIcon,
2460
+ trailingIcon,
2461
+ description
2462
+ } = _b, rest = __objRest(_b, [
2463
+ "value",
2464
+ "defaultValue",
2465
+ "onValueChange",
2466
+ "onValueCommitted",
2467
+ "min",
2468
+ "max",
2469
+ "step",
2470
+ "disabled",
2471
+ "leadingLabel",
2472
+ "trailingLabel",
2473
+ "leadingIcon",
2474
+ "trailingIcon",
2475
+ "description"
2476
+ ]);
2477
+ const theme2 = useTheme();
2478
+ const { slider, buttons } = theme2.tokens.components;
2479
+ const { dimensions } = theme2.tokens.semantics;
2480
+ const isControlled = controlledValue !== void 0;
2481
+ const [internalValue, setInternalValue] = React26.useState(defaultValue);
2482
+ const currentValue = isControlled ? controlledValue : internalValue;
2483
+ const trackWidth = useRef(0);
2484
+ const thumbSize = parseTokenValue22(buttons.size.md.height);
2485
+ const trackHeight = parseTokenValue22(slider.sizing.track.height);
2486
+ const fraction = max > min ? (currentValue - min) / (max - min) : 0;
2487
+ const handleLayout = (e) => {
2488
+ trackWidth.current = e.nativeEvent.layout.width;
2489
+ };
2490
+ const updateValue = useCallback(
2491
+ (locationX) => {
2492
+ if (disabled || trackWidth.current === 0) return;
2493
+ const ratio = clamp(locationX / trackWidth.current, 0, 1);
2494
+ const raw = min + ratio * (max - min);
2495
+ const snapped = snap(clamp(raw, min, max), step, min);
2496
+ if (!isControlled) {
2497
+ setInternalValue(snapped);
2498
+ }
2499
+ onValueChange == null ? void 0 : onValueChange(snapped);
2500
+ },
2501
+ [disabled, min, max, step, isControlled, onValueChange]
2502
+ );
2503
+ const panResponder = useRef(
2504
+ PanResponder.create({
2505
+ onStartShouldSetPanResponder: () => !disabled,
2506
+ onMoveShouldSetPanResponder: () => !disabled,
2507
+ onPanResponderGrant: (e) => {
2508
+ updateValue(e.nativeEvent.locationX);
2509
+ },
2510
+ onPanResponderMove: (e) => {
2511
+ updateValue(e.nativeEvent.locationX);
2512
+ },
2513
+ onPanResponderRelease: () => {
2514
+ onValueCommitted == null ? void 0 : onValueCommitted(currentValue);
2515
+ }
2516
+ })
2517
+ ).current;
2518
+ const hasLeading = leadingIcon !== void 0 || leadingLabel !== void 0;
2519
+ const hasTrailing = trailingIcon !== void 0 || trailingLabel !== void 0;
2520
+ const labelGap = parseTokenValue22(slider.sliderField.spacing.label.gap);
2521
+ const roundBorderRadius = parseTokenValue22(dimensions.borderRadius.round);
2522
+ return /* @__PURE__ */ jsxs(
2523
+ StyledSliderRoot,
2524
+ __spreadProps(__spreadValues({
2525
+ ref,
2526
+ value: currentValue,
2527
+ min,
2528
+ max,
2529
+ disabled,
2530
+ sliderGap: parseTokenValue22(slider.sliderField.spacing.gap),
2531
+ sliderMinWidth: parseTokenValue22(slider.sizing.minWidth),
2532
+ sliderOpacity: disabled ? parseFloat(buttons.opacity.disabled) : 1
2533
+ }, rest), {
2534
+ children: [
2535
+ /* @__PURE__ */ jsxs(StyledLabelRow2, { labelRowGap: labelGap, children: [
2536
+ hasLeading && /* @__PURE__ */ jsxs(StyledLabelSlot, { labelSlotGap: labelGap, children: [
2537
+ leadingIcon,
2538
+ leadingLabel && /* @__PURE__ */ jsx(
2539
+ Typography,
2540
+ {
2541
+ token: slider.sliderField.typography.label,
2542
+ color: slider.sliderField.colour.text.label,
2543
+ children: leadingLabel
2544
+ }
2545
+ )
2546
+ ] }),
2547
+ /* @__PURE__ */ jsxs(
2548
+ StyledTrackArea,
2549
+ __spreadProps(__spreadValues({
2550
+ trackAreaHeight: thumbSize,
2551
+ onLayout: handleLayout
2552
+ }, panResponder.panHandlers), {
2553
+ children: [
2554
+ /* @__PURE__ */ jsx(
2555
+ StyledTrack,
2556
+ {
2557
+ trackHeight,
2558
+ trackBorderRadius: roundBorderRadius,
2559
+ trackBgColor: slider.colour.track.background.default,
2560
+ trackBorderWidth: parseTokenValue22(dimensions.borderWidth.sm),
2561
+ trackBorderColor: slider.colour.track.border.default,
2562
+ children: /* @__PURE__ */ jsx(
2563
+ StyledRange,
2564
+ {
2565
+ rangeBgColor: slider.colour.indicator.background.default,
2566
+ rangeBorderRadius: roundBorderRadius,
2567
+ style: { width: `${fraction * 100}%` }
2568
+ }
2569
+ )
2570
+ }
2571
+ ),
2572
+ /* @__PURE__ */ jsx(
2573
+ StyledThumb2,
2574
+ {
2575
+ thumbSize,
2576
+ style: {
2577
+ left: `${fraction * 100}%`,
2578
+ marginLeft: -thumbSize / 2
2579
+ },
2580
+ thumbBorderRadius: parseTokenValue22(buttons.borderRadius.default),
2581
+ thumbBgColor: buttons.iconButton.filledButton.colour.background.primary.default,
2582
+ children: /* @__PURE__ */ jsx(Typography, { size: "xs", color: "alt", children: "\u27E8\u27E9" })
2583
+ }
2584
+ )
2585
+ ]
2586
+ })
2587
+ ),
2588
+ hasTrailing && /* @__PURE__ */ jsxs(StyledLabelSlot, { labelSlotGap: labelGap, children: [
2589
+ trailingLabel && /* @__PURE__ */ jsx(
2590
+ Typography,
2591
+ {
2592
+ token: slider.sliderField.typography.label,
2593
+ color: slider.sliderField.colour.text.label,
2594
+ children: trailingLabel
2595
+ }
2596
+ ),
2597
+ trailingIcon
2598
+ ] })
2599
+ ] }),
2600
+ description && /* @__PURE__ */ jsx(
2601
+ Typography,
2602
+ {
2603
+ token: slider.sliderField.typography.description,
2604
+ color: slider.sliderField.colour.text.description,
2605
+ children: description
2606
+ }
2607
+ )
2608
+ ]
2609
+ })
2610
+ );
2611
+ }
2612
+ );
2613
+ Slider.displayName = "Slider";
2614
+
2615
+ export { Avatar, BRAND_FONTS, Badge, Button, ButtonDock, ButtonGroup, Checkbox, CheckboxGroup, Hint, Icon, IconButton, Illustration, Input, InputDescription, InputError, InputField, InputLabel, Link, Logo, PawprintProvider, Radio, RadioGroup, SegmentedControl, Slider, Spinner, Switch, Tag, ThemeProvider, Typography, createPawprintTheme, registerLogo, resolveFont, resolveLogo, theme, usePawprint };
2616
+ //# sourceMappingURL=index.js.map
2617
+ //# sourceMappingURL=index.js.map