@danske/sapphire-react-lab 0.104.0 → 0.105.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 (33) hide show
  1. package/README.md +2 -1
  2. package/build/cjs/index.js +728 -233
  3. package/build/cjs/index.js.map +1 -1
  4. package/build/esm/Amount/src/Amount.js +76 -0
  5. package/build/esm/Amount/src/Amount.js.map +1 -0
  6. package/build/esm/Amount/src/useGroupAmount.js +35 -0
  7. package/build/esm/Amount/src/useGroupAmount.js.map +1 -0
  8. package/build/esm/Autocomplete/src/Autocomplete.js +13 -3
  9. package/build/esm/Autocomplete/src/Autocomplete.js.map +1 -1
  10. package/build/esm/Filtering/src/FilterDropdown.js +8 -3
  11. package/build/esm/Filtering/src/FilterDropdown.js.map +1 -1
  12. package/build/esm/Filtering/src/SearchableSelectFilter.js +2 -1
  13. package/build/esm/Filtering/src/SearchableSelectFilter.js.map +1 -1
  14. package/build/esm/NumberField/src/NumberField.js +53 -21
  15. package/build/esm/NumberField/src/NumberField.js.map +1 -1
  16. package/build/esm/NumberField/src/StepperButton.js +8 -4
  17. package/build/esm/NumberField/src/StepperButton.js.map +1 -1
  18. package/build/esm/NumberField/src/cursorHelpers.js +55 -0
  19. package/build/esm/NumberField/src/cursorHelpers.js.map +1 -0
  20. package/build/esm/NumberField/src/formatHelpers.js +81 -0
  21. package/build/esm/NumberField/src/formatHelpers.js.map +1 -0
  22. package/build/esm/NumberField/src/keyboardHelpers.js +120 -0
  23. package/build/esm/NumberField/src/keyboardHelpers.js.map +1 -0
  24. package/build/esm/NumberField/src/useNumberFieldFormatting.js +94 -0
  25. package/build/esm/NumberField/src/useNumberFieldFormatting.js.map +1 -0
  26. package/build/esm/NumberField/src/useSapphireNumberField.js +1 -1
  27. package/build/esm/NumberField/src/useSapphireNumberField.js.map +1 -1
  28. package/build/esm/TagGroup/src/Tag.js +31 -23
  29. package/build/esm/TagGroup/src/Tag.js.map +1 -1
  30. package/build/esm/index.js +1 -0
  31. package/build/esm/index.js.map +1 -1
  32. package/build/index.d.ts +72 -7
  33. package/package.json +35 -35
@@ -11,36 +11,37 @@ var focus = require('@react-aria/focus');
11
11
  var reactAriaComponents = require('react-aria-components');
12
12
  var react = require('@danske/sapphire-icons/react');
13
13
  var alertStyles = require('@danske/sapphire-css/components/alert/alert.module.css');
14
- var combobox = require('@react-aria/combobox');
15
14
  var i18n = require('@react-aria/i18n');
15
+ var styles$1 = require('@danske/sapphire-css/components/amount/amount.module.css');
16
+ var combobox = require('@react-aria/combobox');
16
17
  var utils$1 = require('@react-spectrum/utils');
17
18
  var breadcrumbs = require('@react-aria/breadcrumbs');
18
19
  var collections = require('@react-aria/collections');
19
- var styles$1 = require('@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css');
20
- var styles$2 = require('@danske/sapphire-css/components/dropzone/dropzone.module.css');
20
+ var styles$2 = require('@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css');
21
+ var styles$3 = require('@danske/sapphire-css/components/dropzone/dropzone.module.css');
21
22
  var interactions = require('@react-aria/interactions');
22
23
  var dnd = require('@react-aria/dnd');
23
24
  var visuallyHidden = require('@react-aria/visually-hidden');
24
25
  var utils$2 = require('@react-stately/utils');
25
- var styles$3 = require('@danske/sapphire-css/components/filterDropdown/filterDropdown.module.css');
26
- var styles$4 = require('@danske/sapphire-css/components/flag/flag.module.css');
26
+ var styles$4 = require('@danske/sapphire-css/components/filterDropdown/filterDropdown.module.css');
27
+ var styles$5 = require('@danske/sapphire-css/components/flag/flag.module.css');
27
28
  var label = require('@react-aria/label');
28
29
  var textFieldStyles = require('@danske/sapphire-css/components/textField/textField.module.css');
29
30
  var numberfield$1 = require('@react-aria/numberfield');
30
31
  var numberfield = require('@react-stately/numberfield');
31
- var styles$5 = require('@danske/sapphire-css/components/sidebar/sidebar.module.css');
32
+ var styles$6 = require('@danske/sapphire-css/components/sidebar/sidebar.module.css');
32
33
  var buttonStyles = require('@danske/sapphire-css/components/button/button.module.css');
33
34
  var reactTransitionGroup = require('react-transition-group');
34
35
  var listbox = require('@react-aria/listbox');
35
- var styles$6 = require('@danske/sapphire-css/components/progressIndicator/progressIndicator.module.css');
36
+ var styles$7 = require('@danske/sapphire-css/components/progressIndicator/progressIndicator.module.css');
36
37
  var progress = require('@react-aria/progress');
37
- var styles$7 = require('@danske/sapphire-css/components/slider/slider.module.css');
38
+ var styles$8 = require('@danske/sapphire-css/components/slider/slider.module.css');
38
39
  var tag = require('@react-aria/tag');
39
40
  var list = require('@react-stately/list');
40
- var styles$8 = require('@danske/sapphire-css/components/tag/tag.module.css');
41
+ var styles$9 = require('@danske/sapphire-css/components/tag/tag.module.css');
41
42
  var button = require('@react-aria/button');
42
43
  var collections$1 = require('@react-stately/collections');
43
- var styles$9 = require('@danske/sapphire-css/components/dateField/dateField.module.css');
44
+ var styles$a = require('@danske/sapphire-css/components/dateField/dateField.module.css');
44
45
  var datepicker = require('@react-aria/datepicker');
45
46
  var datepicker$1 = require('@react-stately/datepicker');
46
47
 
@@ -54,13 +55,14 @@ var styles__default$1 = /*#__PURE__*/_interopDefaultLegacy(styles$1);
54
55
  var styles__default$2 = /*#__PURE__*/_interopDefaultLegacy(styles$2);
55
56
  var styles__default$3 = /*#__PURE__*/_interopDefaultLegacy(styles$3);
56
57
  var styles__default$4 = /*#__PURE__*/_interopDefaultLegacy(styles$4);
57
- var textFieldStyles__default = /*#__PURE__*/_interopDefaultLegacy(textFieldStyles);
58
58
  var styles__default$5 = /*#__PURE__*/_interopDefaultLegacy(styles$5);
59
- var buttonStyles__default = /*#__PURE__*/_interopDefaultLegacy(buttonStyles);
59
+ var textFieldStyles__default = /*#__PURE__*/_interopDefaultLegacy(textFieldStyles);
60
60
  var styles__default$6 = /*#__PURE__*/_interopDefaultLegacy(styles$6);
61
+ var buttonStyles__default = /*#__PURE__*/_interopDefaultLegacy(buttonStyles);
61
62
  var styles__default$7 = /*#__PURE__*/_interopDefaultLegacy(styles$7);
62
63
  var styles__default$8 = /*#__PURE__*/_interopDefaultLegacy(styles$8);
63
64
  var styles__default$9 = /*#__PURE__*/_interopDefaultLegacy(styles$9);
65
+ var styles__default$a = /*#__PURE__*/_interopDefaultLegacy(styles$a);
64
66
 
65
67
  const AccordionContext = React__default["default"].createContext({
66
68
  sidePadding: void 0,
@@ -74,33 +76,33 @@ function useAccordionContext() {
74
76
  throw new Error("Accordion context can only be used within Accordion component.");
75
77
  }
76
78
 
77
- var __defProp$w = Object.defineProperty;
78
- var __defProps$t = Object.defineProperties;
79
- var __getOwnPropDescs$t = Object.getOwnPropertyDescriptors;
80
- var __getOwnPropSymbols$w = Object.getOwnPropertySymbols;
81
- var __hasOwnProp$w = Object.prototype.hasOwnProperty;
82
- var __propIsEnum$w = Object.prototype.propertyIsEnumerable;
83
- var __defNormalProp$w = (obj, key, value) => key in obj ? __defProp$w(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
84
- var __spreadValues$w = (a, b) => {
79
+ var __defProp$x = Object.defineProperty;
80
+ var __defProps$u = Object.defineProperties;
81
+ var __getOwnPropDescs$u = Object.getOwnPropertyDescriptors;
82
+ var __getOwnPropSymbols$x = Object.getOwnPropertySymbols;
83
+ var __hasOwnProp$x = Object.prototype.hasOwnProperty;
84
+ var __propIsEnum$x = Object.prototype.propertyIsEnumerable;
85
+ var __defNormalProp$x = (obj, key, value) => key in obj ? __defProp$x(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
86
+ var __spreadValues$x = (a, b) => {
85
87
  for (var prop in b || (b = {}))
86
- if (__hasOwnProp$w.call(b, prop))
87
- __defNormalProp$w(a, prop, b[prop]);
88
- if (__getOwnPropSymbols$w)
89
- for (var prop of __getOwnPropSymbols$w(b)) {
90
- if (__propIsEnum$w.call(b, prop))
91
- __defNormalProp$w(a, prop, b[prop]);
88
+ if (__hasOwnProp$x.call(b, prop))
89
+ __defNormalProp$x(a, prop, b[prop]);
90
+ if (__getOwnPropSymbols$x)
91
+ for (var prop of __getOwnPropSymbols$x(b)) {
92
+ if (__propIsEnum$x.call(b, prop))
93
+ __defNormalProp$x(a, prop, b[prop]);
92
94
  }
93
95
  return a;
94
96
  };
95
- var __spreadProps$t = (a, b) => __defProps$t(a, __getOwnPropDescs$t(b));
96
- var __objRest$t = (source, exclude) => {
97
+ var __spreadProps$u = (a, b) => __defProps$u(a, __getOwnPropDescs$u(b));
98
+ var __objRest$u = (source, exclude) => {
97
99
  var target = {};
98
100
  for (var prop in source)
99
- if (__hasOwnProp$w.call(source, prop) && exclude.indexOf(prop) < 0)
101
+ if (__hasOwnProp$x.call(source, prop) && exclude.indexOf(prop) < 0)
100
102
  target[prop] = source[prop];
101
- if (source != null && __getOwnPropSymbols$w)
102
- for (var prop of __getOwnPropSymbols$w(source)) {
103
- if (exclude.indexOf(prop) < 0 && __propIsEnum$w.call(source, prop))
103
+ if (source != null && __getOwnPropSymbols$x)
104
+ for (var prop of __getOwnPropSymbols$x(source)) {
105
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$x.call(source, prop))
104
106
  target[prop] = source[prop];
105
107
  }
106
108
  return target;
@@ -117,7 +119,7 @@ const Accordion = React.forwardRef(function Accordion2(_a, ref) {
117
119
  defaultExpandedKeys,
118
120
  onExpandedChange,
119
121
  isDisabled
120
- } = _b, props = __objRest$t(_b, [
122
+ } = _b, props = __objRest$u(_b, [
121
123
  "allowsMultipleExpanded",
122
124
  "headerLevel",
123
125
  "hideLastDivider",
@@ -134,7 +136,7 @@ const Accordion = React.forwardRef(function Accordion2(_a, ref) {
134
136
  const forwardedRef = utils.useObjectRef(ref);
135
137
  return /* @__PURE__ */ React__default["default"].createElement(focus.FocusScope, null, /* @__PURE__ */ React__default["default"].createElement(AccordionContext.Provider, {
136
138
  value: { sidePadding, headerLevel }
137
- }, /* @__PURE__ */ React__default["default"].createElement(reactAriaComponents.DisclosureGroup, __spreadProps$t(__spreadValues$w({}, utils.filterDOMProps(props, { global: true, labelable: true })), {
139
+ }, /* @__PURE__ */ React__default["default"].createElement(reactAriaComponents.DisclosureGroup, __spreadProps$u(__spreadValues$x({}, utils.filterDOMProps(props, { global: true, labelable: true })), {
138
140
  allowsMultipleExpanded,
139
141
  expandedKeys,
140
142
  defaultExpandedKeys,
@@ -145,7 +147,7 @@ const Accordion = React.forwardRef(function Accordion2(_a, ref) {
145
147
  [styles__default["default"]["sapphire-accordion--without-last-divider"]]: hideLastDivider,
146
148
  [styles__default["default"]["sapphire-accordion--negative-margin-self"]]: !sapphireReact.withTruthyZero(sidePadding) && hasNegativeSideMargin
147
149
  }, styleProps.className),
148
- style: __spreadValues$w(__spreadValues$w({}, sapphireReact.withTruthyZero(sidePadding) && hasNegativeSideMargin ? {
150
+ style: __spreadValues$x(__spreadValues$x({}, sapphireReact.withTruthyZero(sidePadding) && hasNegativeSideMargin ? {
149
151
  marginLeft: typeof sidePadding === "string" ? `calc(${sidePadding} * -1)` : `-${sidePadding}px`,
150
152
  width: `calc(100% + calc(${sidePadding} * 2${typeof sidePadding === "string" ? "" : "px"}))`
151
153
  } : {}), styleProps.style)
@@ -157,41 +159,41 @@ const customPaddingStyleProps = (sidePadding) => ({
157
159
  paddingRight: typeof sidePadding === "string" ? sidePadding : `${sidePadding}px`
158
160
  });
159
161
 
160
- var __defProp$v = Object.defineProperty;
161
- var __defProps$s = Object.defineProperties;
162
- var __getOwnPropDescs$s = Object.getOwnPropertyDescriptors;
163
- var __getOwnPropSymbols$v = Object.getOwnPropertySymbols;
164
- var __hasOwnProp$v = Object.prototype.hasOwnProperty;
165
- var __propIsEnum$v = Object.prototype.propertyIsEnumerable;
166
- var __defNormalProp$v = (obj, key, value) => key in obj ? __defProp$v(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
167
- var __spreadValues$v = (a, b) => {
162
+ var __defProp$w = Object.defineProperty;
163
+ var __defProps$t = Object.defineProperties;
164
+ var __getOwnPropDescs$t = Object.getOwnPropertyDescriptors;
165
+ var __getOwnPropSymbols$w = Object.getOwnPropertySymbols;
166
+ var __hasOwnProp$w = Object.prototype.hasOwnProperty;
167
+ var __propIsEnum$w = Object.prototype.propertyIsEnumerable;
168
+ var __defNormalProp$w = (obj, key, value) => key in obj ? __defProp$w(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
169
+ var __spreadValues$w = (a, b) => {
168
170
  for (var prop in b || (b = {}))
169
- if (__hasOwnProp$v.call(b, prop))
170
- __defNormalProp$v(a, prop, b[prop]);
171
- if (__getOwnPropSymbols$v)
172
- for (var prop of __getOwnPropSymbols$v(b)) {
173
- if (__propIsEnum$v.call(b, prop))
174
- __defNormalProp$v(a, prop, b[prop]);
171
+ if (__hasOwnProp$w.call(b, prop))
172
+ __defNormalProp$w(a, prop, b[prop]);
173
+ if (__getOwnPropSymbols$w)
174
+ for (var prop of __getOwnPropSymbols$w(b)) {
175
+ if (__propIsEnum$w.call(b, prop))
176
+ __defNormalProp$w(a, prop, b[prop]);
175
177
  }
176
178
  return a;
177
179
  };
178
- var __spreadProps$s = (a, b) => __defProps$s(a, __getOwnPropDescs$s(b));
179
- var __objRest$s = (source, exclude) => {
180
+ var __spreadProps$t = (a, b) => __defProps$t(a, __getOwnPropDescs$t(b));
181
+ var __objRest$t = (source, exclude) => {
180
182
  var target = {};
181
183
  for (var prop in source)
182
- if (__hasOwnProp$v.call(source, prop) && exclude.indexOf(prop) < 0)
184
+ if (__hasOwnProp$w.call(source, prop) && exclude.indexOf(prop) < 0)
183
185
  target[prop] = source[prop];
184
- if (source != null && __getOwnPropSymbols$v)
185
- for (var prop of __getOwnPropSymbols$v(source)) {
186
- if (exclude.indexOf(prop) < 0 && __propIsEnum$v.call(source, prop))
186
+ if (source != null && __getOwnPropSymbols$w)
187
+ for (var prop of __getOwnPropSymbols$w(source)) {
188
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$w.call(source, prop))
187
189
  target[prop] = source[prop];
188
190
  }
189
191
  return target;
190
192
  };
191
193
  const AccordionHeading = React.forwardRef(function AccordionHeading2(_a, ref) {
192
- var _b = _a, { children, headerLevel } = _b, props = __objRest$s(_b, ["children", "headerLevel"]);
194
+ var _b = _a, { children, headerLevel } = _b, props = __objRest$t(_b, ["children", "headerLevel"]);
193
195
  const { sidePadding, headerLevel: contextHeaderLevel } = useAccordionContext();
194
- return /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$s(__spreadValues$v({
196
+ return /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$t(__spreadValues$w({
195
197
  role: "heading",
196
198
  "aria-level": headerLevel != null ? headerLevel : contextHeaderLevel
197
199
  }, utils.filterDOMProps(props, { global: true })), {
@@ -214,36 +216,36 @@ const AccordionHeading = React.forwardRef(function AccordionHeading2(_a, ref) {
214
216
  }, /* @__PURE__ */ React__default["default"].createElement(react.ChevronDown, null)))));
215
217
  });
216
218
 
217
- var __defProp$u = Object.defineProperty;
218
- var __getOwnPropSymbols$u = Object.getOwnPropertySymbols;
219
- var __hasOwnProp$u = Object.prototype.hasOwnProperty;
220
- var __propIsEnum$u = Object.prototype.propertyIsEnumerable;
221
- var __defNormalProp$u = (obj, key, value) => key in obj ? __defProp$u(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
222
- var __spreadValues$u = (a, b) => {
219
+ var __defProp$v = Object.defineProperty;
220
+ var __getOwnPropSymbols$v = Object.getOwnPropertySymbols;
221
+ var __hasOwnProp$v = Object.prototype.hasOwnProperty;
222
+ var __propIsEnum$v = Object.prototype.propertyIsEnumerable;
223
+ var __defNormalProp$v = (obj, key, value) => key in obj ? __defProp$v(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
224
+ var __spreadValues$v = (a, b) => {
223
225
  for (var prop in b || (b = {}))
224
- if (__hasOwnProp$u.call(b, prop))
225
- __defNormalProp$u(a, prop, b[prop]);
226
- if (__getOwnPropSymbols$u)
227
- for (var prop of __getOwnPropSymbols$u(b)) {
228
- if (__propIsEnum$u.call(b, prop))
229
- __defNormalProp$u(a, prop, b[prop]);
226
+ if (__hasOwnProp$v.call(b, prop))
227
+ __defNormalProp$v(a, prop, b[prop]);
228
+ if (__getOwnPropSymbols$v)
229
+ for (var prop of __getOwnPropSymbols$v(b)) {
230
+ if (__propIsEnum$v.call(b, prop))
231
+ __defNormalProp$v(a, prop, b[prop]);
230
232
  }
231
233
  return a;
232
234
  };
233
- var __objRest$r = (source, exclude) => {
235
+ var __objRest$s = (source, exclude) => {
234
236
  var target = {};
235
237
  for (var prop in source)
236
- if (__hasOwnProp$u.call(source, prop) && exclude.indexOf(prop) < 0)
238
+ if (__hasOwnProp$v.call(source, prop) && exclude.indexOf(prop) < 0)
237
239
  target[prop] = source[prop];
238
- if (source != null && __getOwnPropSymbols$u)
239
- for (var prop of __getOwnPropSymbols$u(source)) {
240
- if (exclude.indexOf(prop) < 0 && __propIsEnum$u.call(source, prop))
240
+ if (source != null && __getOwnPropSymbols$v)
241
+ for (var prop of __getOwnPropSymbols$v(source)) {
242
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$v.call(source, prop))
241
243
  target[prop] = source[prop];
242
244
  }
243
245
  return target;
244
246
  };
245
247
  const AccordionItem = React.forwardRef(function AccordionItem2(_a, forwardedRef) {
246
- var _b = _a, { children, id } = _b, props = __objRest$r(_b, ["children", "id"]);
248
+ var _b = _a, { children, id } = _b, props = __objRest$s(_b, ["children", "id"]);
247
249
  const ref = utils.useObjectRef(forwardedRef);
248
250
  const focusManager = focus.useFocusManager();
249
251
  const onKeyDown = (e) => {
@@ -273,7 +275,7 @@ const AccordionItem = React.forwardRef(function AccordionItem2(_a, forwardedRef)
273
275
  }
274
276
  };
275
277
  utils.useEvent(ref, "keydown", onKeyDown);
276
- return /* @__PURE__ */ React__default["default"].createElement(reactAriaComponents.Disclosure, __spreadValues$u({
278
+ return /* @__PURE__ */ React__default["default"].createElement(reactAriaComponents.Disclosure, __spreadValues$v({
277
279
  ref,
278
280
  id,
279
281
  className: ({ isExpanded, isDisabled }) => clsx__default["default"](styles__default["default"]["sapphire-accordion__item"], {
@@ -285,41 +287,41 @@ const AccordionItem = React.forwardRef(function AccordionItem2(_a, forwardedRef)
285
287
  }, children));
286
288
  });
287
289
 
288
- var __defProp$t = Object.defineProperty;
289
- var __defProps$r = Object.defineProperties;
290
- var __getOwnPropDescs$r = Object.getOwnPropertyDescriptors;
291
- var __getOwnPropSymbols$t = Object.getOwnPropertySymbols;
292
- var __hasOwnProp$t = Object.prototype.hasOwnProperty;
293
- var __propIsEnum$t = Object.prototype.propertyIsEnumerable;
294
- var __defNormalProp$t = (obj, key, value) => key in obj ? __defProp$t(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
295
- var __spreadValues$t = (a, b) => {
290
+ var __defProp$u = Object.defineProperty;
291
+ var __defProps$s = Object.defineProperties;
292
+ var __getOwnPropDescs$s = Object.getOwnPropertyDescriptors;
293
+ var __getOwnPropSymbols$u = Object.getOwnPropertySymbols;
294
+ var __hasOwnProp$u = Object.prototype.hasOwnProperty;
295
+ var __propIsEnum$u = Object.prototype.propertyIsEnumerable;
296
+ var __defNormalProp$u = (obj, key, value) => key in obj ? __defProp$u(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
297
+ var __spreadValues$u = (a, b) => {
296
298
  for (var prop in b || (b = {}))
297
- if (__hasOwnProp$t.call(b, prop))
298
- __defNormalProp$t(a, prop, b[prop]);
299
- if (__getOwnPropSymbols$t)
300
- for (var prop of __getOwnPropSymbols$t(b)) {
301
- if (__propIsEnum$t.call(b, prop))
302
- __defNormalProp$t(a, prop, b[prop]);
299
+ if (__hasOwnProp$u.call(b, prop))
300
+ __defNormalProp$u(a, prop, b[prop]);
301
+ if (__getOwnPropSymbols$u)
302
+ for (var prop of __getOwnPropSymbols$u(b)) {
303
+ if (__propIsEnum$u.call(b, prop))
304
+ __defNormalProp$u(a, prop, b[prop]);
303
305
  }
304
306
  return a;
305
307
  };
306
- var __spreadProps$r = (a, b) => __defProps$r(a, __getOwnPropDescs$r(b));
307
- var __objRest$q = (source, exclude) => {
308
+ var __spreadProps$s = (a, b) => __defProps$s(a, __getOwnPropDescs$s(b));
309
+ var __objRest$r = (source, exclude) => {
308
310
  var target = {};
309
311
  for (var prop in source)
310
- if (__hasOwnProp$t.call(source, prop) && exclude.indexOf(prop) < 0)
312
+ if (__hasOwnProp$u.call(source, prop) && exclude.indexOf(prop) < 0)
311
313
  target[prop] = source[prop];
312
- if (source != null && __getOwnPropSymbols$t)
313
- for (var prop of __getOwnPropSymbols$t(source)) {
314
- if (exclude.indexOf(prop) < 0 && __propIsEnum$t.call(source, prop))
314
+ if (source != null && __getOwnPropSymbols$u)
315
+ for (var prop of __getOwnPropSymbols$u(source)) {
316
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$u.call(source, prop))
315
317
  target[prop] = source[prop];
316
318
  }
317
319
  return target;
318
320
  };
319
321
  const AccordionPanel = React.forwardRef(function AccordionPanel2(_a, ref) {
320
- var _b = _a, { children } = _b, props = __objRest$q(_b, ["children"]);
322
+ var _b = _a, { children } = _b, props = __objRest$r(_b, ["children"]);
321
323
  const { sidePadding } = useAccordionContext();
322
- return /* @__PURE__ */ React__default["default"].createElement(reactAriaComponents.DisclosurePanel, __spreadValues$t(__spreadProps$r(__spreadValues$t({
324
+ return /* @__PURE__ */ React__default["default"].createElement(reactAriaComponents.DisclosurePanel, __spreadValues$u(__spreadProps$s(__spreadValues$u({
323
325
  ref
324
326
  }, utils.filterDOMProps(props, { global: true })), {
325
327
  className: clsx__default["default"](styles__default["default"]["sapphire-accordion__item-content"]),
@@ -327,7 +329,7 @@ const AccordionPanel = React.forwardRef(function AccordionPanel2(_a, ref) {
327
329
  height: "var(--disclosure-panel-height)"
328
330
  }
329
331
  }), props), /* @__PURE__ */ React__default["default"].createElement("div", {
330
- style: __spreadValues$t({}, sapphireReact.withTruthyZero(sidePadding) ? customPaddingStyleProps(sidePadding) : {}),
332
+ style: __spreadValues$u({}, sapphireReact.withTruthyZero(sidePadding) ? customPaddingStyleProps(sidePadding) : {}),
331
333
  className: styles__default["default"]["sapphire-accordion__item-content-inner"]
332
334
  }, children));
333
335
  });
@@ -338,33 +340,33 @@ const _Accordion = Object.assign(Accordion, {
338
340
  Panel: AccordionPanel
339
341
  });
340
342
 
341
- var __defProp$s = Object.defineProperty;
342
- var __defProps$q = Object.defineProperties;
343
- var __getOwnPropDescs$q = Object.getOwnPropertyDescriptors;
344
- var __getOwnPropSymbols$s = Object.getOwnPropertySymbols;
345
- var __hasOwnProp$s = Object.prototype.hasOwnProperty;
346
- var __propIsEnum$s = Object.prototype.propertyIsEnumerable;
347
- var __defNormalProp$s = (obj, key, value) => key in obj ? __defProp$s(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
348
- var __spreadValues$s = (a, b) => {
343
+ var __defProp$t = Object.defineProperty;
344
+ var __defProps$r = Object.defineProperties;
345
+ var __getOwnPropDescs$r = Object.getOwnPropertyDescriptors;
346
+ var __getOwnPropSymbols$t = Object.getOwnPropertySymbols;
347
+ var __hasOwnProp$t = Object.prototype.hasOwnProperty;
348
+ var __propIsEnum$t = Object.prototype.propertyIsEnumerable;
349
+ var __defNormalProp$t = (obj, key, value) => key in obj ? __defProp$t(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
350
+ var __spreadValues$t = (a, b) => {
349
351
  for (var prop in b || (b = {}))
350
- if (__hasOwnProp$s.call(b, prop))
351
- __defNormalProp$s(a, prop, b[prop]);
352
- if (__getOwnPropSymbols$s)
353
- for (var prop of __getOwnPropSymbols$s(b)) {
354
- if (__propIsEnum$s.call(b, prop))
355
- __defNormalProp$s(a, prop, b[prop]);
352
+ if (__hasOwnProp$t.call(b, prop))
353
+ __defNormalProp$t(a, prop, b[prop]);
354
+ if (__getOwnPropSymbols$t)
355
+ for (var prop of __getOwnPropSymbols$t(b)) {
356
+ if (__propIsEnum$t.call(b, prop))
357
+ __defNormalProp$t(a, prop, b[prop]);
356
358
  }
357
359
  return a;
358
360
  };
359
- var __spreadProps$q = (a, b) => __defProps$q(a, __getOwnPropDescs$q(b));
360
- var __objRest$p = (source, exclude) => {
361
+ var __spreadProps$r = (a, b) => __defProps$r(a, __getOwnPropDescs$r(b));
362
+ var __objRest$q = (source, exclude) => {
361
363
  var target = {};
362
364
  for (var prop in source)
363
- if (__hasOwnProp$s.call(source, prop) && exclude.indexOf(prop) < 0)
365
+ if (__hasOwnProp$t.call(source, prop) && exclude.indexOf(prop) < 0)
364
366
  target[prop] = source[prop];
365
- if (source != null && __getOwnPropSymbols$s)
366
- for (var prop of __getOwnPropSymbols$s(source)) {
367
- if (exclude.indexOf(prop) < 0 && __propIsEnum$s.call(source, prop))
367
+ if (source != null && __getOwnPropSymbols$t)
368
+ for (var prop of __getOwnPropSymbols$t(source)) {
369
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$t.call(source, prop))
368
370
  target[prop] = source[prop];
369
371
  }
370
372
  return target;
@@ -374,7 +376,7 @@ function Alert(_a) {
374
376
  children,
375
377
  title,
376
378
  variant = "info"
377
- } = _b, props = __objRest$p(_b, [
379
+ } = _b, props = __objRest$q(_b, [
378
380
  "children",
379
381
  "title",
380
382
  "variant"
@@ -395,7 +397,7 @@ function Alert(_a) {
395
397
  return /* @__PURE__ */ React__default["default"].createElement(react.Information, null);
396
398
  }
397
399
  };
398
- return /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$q(__spreadValues$s({}, utils.filterDOMProps(props, { global: true })), {
400
+ return /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$r(__spreadValues$t({}, utils.filterDOMProps(props, { global: true })), {
399
401
  className: clsx.clsx(alertStyles__default["default"]["sapphire-alert"], {
400
402
  [alertStyles__default["default"]["sapphire-alert--positive"]]: variant === "positive",
401
403
  [alertStyles__default["default"]["sapphire-alert--negative"]]: variant === "negative",
@@ -420,6 +422,105 @@ function Alert(_a) {
420
422
  }, children)));
421
423
  }
422
424
 
425
+ const useGroupAmount = (value, formatter) => {
426
+ const numberValue = React.useMemo(() => {
427
+ const parsed = Number(value);
428
+ return isNaN(parsed) ? 0 : parsed;
429
+ }, [value]);
430
+ const groupedParts = React.useMemo(() => {
431
+ const parts = formatter.formatToParts(numberValue);
432
+ const result = [];
433
+ let currentNumber = "";
434
+ parts.forEach((part) => {
435
+ if (part.type === "plusSign" || part.type === "minusSign") {
436
+ result.push({ type: "sign", value: part.value });
437
+ } else if (part.type === "currency") {
438
+ if (currentNumber) {
439
+ result.push({ type: "number", value: currentNumber });
440
+ currentNumber = "";
441
+ }
442
+ result.push({ type: "currency", value: part.value });
443
+ } else if (part.type !== "literal") {
444
+ currentNumber += part.value;
445
+ }
446
+ });
447
+ if (currentNumber) {
448
+ result.push({ type: "number", value: currentNumber });
449
+ }
450
+ return result;
451
+ }, [numberValue, formatter]);
452
+ const formattedValue = React.useMemo(() => groupedParts.map((part) => part.value).join(""), [groupedParts]);
453
+ return { formattedValue, groupedParts };
454
+ };
455
+
456
+ var __defProp$s = Object.defineProperty;
457
+ var __defProps$q = Object.defineProperties;
458
+ var __getOwnPropDescs$q = Object.getOwnPropertyDescriptors;
459
+ var __getOwnPropSymbols$s = Object.getOwnPropertySymbols;
460
+ var __hasOwnProp$s = Object.prototype.hasOwnProperty;
461
+ var __propIsEnum$s = Object.prototype.propertyIsEnumerable;
462
+ var __defNormalProp$s = (obj, key, value) => key in obj ? __defProp$s(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
463
+ var __spreadValues$s = (a, b) => {
464
+ for (var prop in b || (b = {}))
465
+ if (__hasOwnProp$s.call(b, prop))
466
+ __defNormalProp$s(a, prop, b[prop]);
467
+ if (__getOwnPropSymbols$s)
468
+ for (var prop of __getOwnPropSymbols$s(b)) {
469
+ if (__propIsEnum$s.call(b, prop))
470
+ __defNormalProp$s(a, prop, b[prop]);
471
+ }
472
+ return a;
473
+ };
474
+ var __spreadProps$q = (a, b) => __defProps$q(a, __getOwnPropDescs$q(b));
475
+ var __objRest$p = (source, exclude) => {
476
+ var target = {};
477
+ for (var prop in source)
478
+ if (__hasOwnProp$s.call(source, prop) && exclude.indexOf(prop) < 0)
479
+ target[prop] = source[prop];
480
+ if (source != null && __getOwnPropSymbols$s)
481
+ for (var prop of __getOwnPropSymbols$s(source)) {
482
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$s.call(source, prop))
483
+ target[prop] = source[prop];
484
+ }
485
+ return target;
486
+ };
487
+ const Amount = (_a) => {
488
+ var _b = _a, {
489
+ emphasis = "regular",
490
+ variant,
491
+ formatOptions,
492
+ value,
493
+ size
494
+ } = _b, props = __objRest$p(_b, [
495
+ "emphasis",
496
+ "variant",
497
+ "formatOptions",
498
+ "value",
499
+ "size"
500
+ ]);
501
+ sapphireReact.useThemeCheck();
502
+ const { styleProps, filteredProps } = sapphireReact.useSapphireStyleProps(props);
503
+ const { locale } = i18n.useLocale();
504
+ const formatter = React.useMemo(() => new Intl.NumberFormat(locale, __spreadValues$s({
505
+ style: (formatOptions == null ? void 0 : formatOptions.currency) ? "currency" : void 0,
506
+ signDisplay: (formatOptions == null ? void 0 : formatOptions.signDisplay) || String(value).startsWith("+") ? "always" : "auto",
507
+ minimumFractionDigits: 2
508
+ }, formatOptions)), [locale, formatOptions, value]);
509
+ const { formattedValue, groupedParts } = useGroupAmount(value, formatter);
510
+ return /* @__PURE__ */ React__default["default"].createElement("span", __spreadProps$q(__spreadValues$s({
511
+ style: styleProps.style,
512
+ className: styles__default$1["default"]["sapphire-amount"]
513
+ }, filteredProps), {
514
+ "aria-label": formattedValue
515
+ }), groupedParts.map((part, index) => /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Typography.Body, {
516
+ elementType: "span",
517
+ key: index,
518
+ color: variant === "positive" ? "positive" : "primary",
519
+ isSemibold: emphasis === "primary" ? true : false,
520
+ size
521
+ }, part.value)));
522
+ };
523
+
423
524
  var da$3 = {
424
525
  "listbox-suggestions": "Forslag"
425
526
  };
@@ -498,13 +599,17 @@ function Autocomplete(props) {
498
599
  renderInput,
499
600
  loadingState,
500
601
  loadingSkeletonRowsCount,
501
- listboxAriaLabel
602
+ listboxAriaLabel,
603
+ onSuggestionSelected,
604
+ onSelectionChange
502
605
  } = _a, otherProps = __objRest$o(_a, [
503
606
  "inputValue",
504
607
  "renderInput",
505
608
  "loadingState",
506
609
  "loadingSkeletonRowsCount",
507
- "listboxAriaLabel"
610
+ "listboxAriaLabel",
611
+ "onSuggestionSelected",
612
+ "onSelectionChange"
508
613
  ]);
509
614
  const {
510
615
  styleProps: { style, className }
@@ -517,7 +622,13 @@ function Autocomplete(props) {
517
622
  inputValue,
518
623
  allowsEmptyCollection: loadingState === "loading",
519
624
  allowsCustomValue: true,
520
- shouldCloseOnBlur: true
625
+ shouldCloseOnBlur: true,
626
+ onSelectionChange: (key) => {
627
+ if (key !== null) {
628
+ onSelectionChange == null ? void 0 : onSelectionChange(key);
629
+ onSuggestionSelected == null ? void 0 : onSuggestionSelected(key);
630
+ }
631
+ }
521
632
  }));
522
633
  const { inputProps, listBoxProps } = combobox.useComboBox(__spreadProps$p(__spreadValues$r({}, props), {
523
634
  "aria-label": listboxAriaLabel || formatMessage("listbox-suggestions"),
@@ -677,9 +788,9 @@ const Breadcrumbs = React.forwardRef(function Breadcrumbs2(_a, fwdRef) {
677
788
  }, /* @__PURE__ */ React__default["default"].createElement("ol", __spreadProps$o(__spreadValues$q({
678
789
  ref
679
790
  }, utils.mergeProps(DOMProps, navProps)), {
680
- className: clsx__default["default"](styles__default$1["default"]["sapphire-breadcrumbs"], {
681
- [styles__default$1["default"]["sapphire-breadcrumbs--sm"]]: size === "sm",
682
- [styles__default$1["default"]["sapphire-breadcrumbs--lg"]]: size === "lg"
791
+ className: clsx__default["default"](styles__default$2["default"]["sapphire-breadcrumbs"], {
792
+ [styles__default$2["default"]["sapphire-breadcrumbs--sm"]]: size === "sm",
793
+ [styles__default$2["default"]["sapphire-breadcrumbs--lg"]]: size === "lg"
683
794
  })
684
795
  }), /* @__PURE__ */ React__default["default"].createElement(BreadcrumbsContext.Provider, {
685
796
  value: {
@@ -699,7 +810,7 @@ const BreadcrumbsSeparator = () => {
699
810
  const { size } = React.useContext(BreadcrumbsContext);
700
811
  const iconSize = size === "lg" ? "md" : "sm";
701
812
  return /* @__PURE__ */ React__default["default"].createElement("span", {
702
- className: clsx__default["default"](styles__default$1["default"]["sapphire-breadcrumbs__separator"]),
813
+ className: clsx__default["default"](styles__default$2["default"]["sapphire-breadcrumbs__separator"]),
703
814
  "aria-hidden": "true"
704
815
  }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Icon, {
705
816
  size: iconSize
@@ -762,9 +873,9 @@ const BreadcrumbItemStatic = React.forwardRef(function BreadcrumbItemStatic2(_a,
762
873
  const positioningRef = tooltipProps == null ? void 0 : tooltipProps.ref;
763
874
  return /* @__PURE__ */ React__default["default"].createElement("span", __spreadProps$n(__spreadValues$p({}, tooltipProps), {
764
875
  ref: utils.mergeRefs(ref, tooltipContentRef, positioningRef),
765
- className: clsx__default["default"](styles__default$1["default"]["sapphire-breadcrumbs__item--static"], {
766
- [styles__default$1["default"]["sapphire-breadcrumbs__item--static--sm"]]: size === "sm",
767
- [styles__default$1["default"]["sapphire-breadcrumbs__item--static--lg"]]: size === "lg"
876
+ className: clsx__default["default"](styles__default$2["default"]["sapphire-breadcrumbs__item--static"], {
877
+ [styles__default$2["default"]["sapphire-breadcrumbs__item--static--sm"]]: size === "sm",
878
+ [styles__default$2["default"]["sapphire-breadcrumbs__item--static--lg"]]: size === "lg"
768
879
  }, styleProps.className),
769
880
  style: styleProps.style
770
881
  }), props.children);
@@ -866,7 +977,7 @@ const BreadcrumbItem = collections.createLeafComponent(BreadcrumbItemCollectionN
866
977
  node.href = props.href;
867
978
  return /* @__PURE__ */ React__default["default"].createElement("li", {
868
979
  ref,
869
- className: clsx__default["default"](styles__default$1["default"]["sapphire-breadcrumbs__item"]),
980
+ className: clsx__default["default"](styles__default$2["default"]["sapphire-breadcrumbs__item"]),
870
981
  style: __spreadValues$n({}, styleProps.style),
871
982
  "data-disabled": isDisabled || void 0,
872
983
  "data-current": isCurrent || void 0
@@ -1116,30 +1227,30 @@ const FileDropzone = React__default["default"].forwardRef(function DropzoneWrapp
1116
1227
  onPress: onFileSelectOpen
1117
1228
  }, /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$k(__spreadValues$l(__spreadValues$l({}, utils.mergeProps(dropProps, hoverProps, clipboardProps, focusProps, buttonProps)), utils.filterDOMProps(otherProps, { global: true })), {
1118
1229
  style: __spreadValues$l({}, styleProps.style),
1119
- className: clsx__default["default"](styles__default$2["default"]["sapphire-dropzone"], styles__default$2["default"]["js-focus"], styles__default$2["default"]["js-hover"], {
1120
- [styles__default$2["default"]["is-hover"]]: isHovered && !isDropping,
1121
- [styles__default$2["default"]["is-active"]]: isPressed,
1122
- [styles__default$2["default"]["is-disabled"]]: isDisabled,
1123
- [styles__default$2["default"]["is-focus"]]: isFocusVisible,
1124
- [styles__default$2["default"]["sapphire-dropzone--dropping"]]: isDropping,
1125
- [styles__default$2["default"]["sapphire-dropzone--error"]]: hasError
1230
+ className: clsx__default["default"](styles__default$3["default"]["sapphire-dropzone"], styles__default$3["default"]["js-focus"], styles__default$3["default"]["js-hover"], {
1231
+ [styles__default$3["default"]["is-hover"]]: isHovered && !isDropping,
1232
+ [styles__default$3["default"]["is-active"]]: isPressed,
1233
+ [styles__default$3["default"]["is-disabled"]]: isDisabled,
1234
+ [styles__default$3["default"]["is-focus"]]: isFocusVisible,
1235
+ [styles__default$3["default"]["sapphire-dropzone--dropping"]]: isDropping,
1236
+ [styles__default$3["default"]["sapphire-dropzone--error"]]: hasError
1126
1237
  }, styleProps.className),
1127
1238
  "aria-label": ariaLabel,
1128
1239
  "aria-invalid": hasError,
1129
1240
  "aria-describedby": paragraphId
1130
1241
  }), /* @__PURE__ */ React__default["default"].createElement("div", {
1131
- className: clsx__default["default"](styles__default$2["default"]["sapphire-dropzone__content"])
1242
+ className: clsx__default["default"](styles__default$3["default"]["sapphire-dropzone__content"])
1132
1243
  }, /* @__PURE__ */ React__default["default"].createElement("div", {
1133
- className: clsx__default["default"](styles__default$2["default"]["sapphire-dropzone__icon"])
1244
+ className: clsx__default["default"](styles__default$3["default"]["sapphire-dropzone__icon"])
1134
1245
  }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Icon, {
1135
1246
  size: "lg"
1136
1247
  }, /* @__PURE__ */ React__default["default"].createElement(react.Upload, null))), /* @__PURE__ */ React__default["default"].createElement("div", {
1137
- className: clsx__default["default"](styles__default$2["default"]["sapphire-dropzone__heading"])
1248
+ className: clsx__default["default"](styles__default$3["default"]["sapphire-dropzone__heading"])
1138
1249
  }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Typography.Heading, {
1139
1250
  level: 6
1140
1251
  }, isDropping ? format("dropzone-heading-dropping") : allowsMultiple ? format("dropzone-heading-default") : format("dropzone-heading-default-single"))), /* @__PURE__ */ React__default["default"].createElement("div", {
1141
1252
  id: paragraphId,
1142
- className: clsx__default["default"](styles__default$2["default"]["sapphire-dropzone__paragraph"])
1253
+ className: clsx__default["default"](styles__default$3["default"]["sapphire-dropzone__paragraph"])
1143
1254
  }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Typography.Body, {
1144
1255
  size: "sm",
1145
1256
  color: "secondary"
@@ -1188,6 +1299,7 @@ function FilterDropdown(_a) {
1188
1299
  isOpen: isOpenProp,
1189
1300
  applyButtonLabel = "Apply",
1190
1301
  clearButtonLabel = "Clear",
1302
+ hideClearButton = false,
1191
1303
  defaultOpen = false,
1192
1304
  hasApplyButton = false,
1193
1305
  noMaxWidth,
@@ -1205,6 +1317,7 @@ function FilterDropdown(_a) {
1205
1317
  "isOpen",
1206
1318
  "applyButtonLabel",
1207
1319
  "clearButtonLabel",
1320
+ "hideClearButton",
1208
1321
  "defaultOpen",
1209
1322
  "hasApplyButton",
1210
1323
  "noMaxWidth",
@@ -1214,6 +1327,7 @@ function FilterDropdown(_a) {
1214
1327
  "buttonSize"
1215
1328
  ]);
1216
1329
  const triggerRef = React.useRef(null);
1330
+ const { styleProps } = sapphireReact.useSapphireStyleProps(props);
1217
1331
  const [isOpen, setIsOpen] = utils$2.useControlledState(isOpenProp, defaultOpen, utils.useEffectEvent(onOpenChange));
1218
1332
  const hasValue = value != null && value !== "";
1219
1333
  const close = () => setIsOpen(false);
@@ -1239,14 +1353,15 @@ function FilterDropdown(_a) {
1239
1353
  noPadding: true,
1240
1354
  popoverContent: /* @__PURE__ */ React__default["default"].createElement("form", __spreadProps$j(__spreadValues$k({}, utils.filterDOMProps(props, { global: true })), {
1241
1355
  onSubmit,
1242
- className: styles__default$3["default"]["sapphire-filter-dropdown"]
1356
+ className: clsx__default["default"](styles__default$4["default"]["sapphire-filter-dropdown"], styleProps.className),
1357
+ style: __spreadValues$k({}, styleProps.style)
1243
1358
  }), /* @__PURE__ */ React__default["default"].createElement("div", {
1244
- className: styles__default$3["default"]["sapphire-filter-dropdown__body"]
1359
+ className: styles__default$4["default"]["sapphire-filter-dropdown__body"]
1245
1360
  }, children), /* @__PURE__ */ React__default["default"].createElement("div", {
1246
- className: styles__default$3["default"]["sapphire-filter-dropdown__footer"]
1361
+ className: styles__default$4["default"]["sapphire-filter-dropdown__footer"]
1247
1362
  }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.ButtonGroup, {
1248
1363
  align: "right"
1249
- }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Button, {
1364
+ }, !hideClearButton && /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Button, {
1250
1365
  size: buttonSize,
1251
1366
  variant: "text",
1252
1367
  onPress: () => {
@@ -1369,13 +1484,13 @@ const Flag = React__default["default"].forwardRef(function Flag2(_a, ref) {
1369
1484
  ref,
1370
1485
  role: "img"
1371
1486
  }, ariaLabel ? { "aria-label": ariaLabel } : { "aria-hidden": true }), {
1372
- className: clsx__default["default"](styles__default$4["default"]["sapphire-flag"], styleProps.className, {
1373
- [styles__default$4["default"]["sapphire-flag--xs"]]: size === "xs",
1374
- [styles__default$4["default"]["sapphire-flag--sm"]]: size === "sm",
1375
- [styles__default$4["default"]["sapphire-flag--md"]]: size === "md",
1376
- [styles__default$4["default"]["sapphire-flag--lg"]]: size === "lg",
1377
- [styles__default$4["default"]["sapphire-flag--xl"]]: size === "xl",
1378
- [styles__default$4["default"]["sapphire-flag--rounded"]]: rounded
1487
+ className: clsx__default["default"](styles__default$5["default"]["sapphire-flag"], styleProps.className, {
1488
+ [styles__default$5["default"]["sapphire-flag--xs"]]: size === "xs",
1489
+ [styles__default$5["default"]["sapphire-flag--sm"]]: size === "sm",
1490
+ [styles__default$5["default"]["sapphire-flag--md"]]: size === "md",
1491
+ [styles__default$5["default"]["sapphire-flag--lg"]]: size === "lg",
1492
+ [styles__default$5["default"]["sapphire-flag--xl"]]: size === "xl",
1493
+ [styles__default$5["default"]["sapphire-flag--rounded"]]: rounded
1379
1494
  }),
1380
1495
  style: styleProps.style
1381
1496
  }));
@@ -1539,15 +1654,18 @@ const StepperButton = (_a) => {
1539
1654
  const ref = React.useRef(null);
1540
1655
  const { buttonProps, isPressed } = sapphireReact.useButton(props, ref);
1541
1656
  const { hoverProps, isHovered } = interactions.useHover({ isDisabled: props.isDisabled });
1542
- return /* @__PURE__ */ React__default["default"].createElement("button", __spreadProps$f(__spreadValues$g({}, utils.mergeProps(buttonProps, hoverProps, utils.filterDOMProps(props, { global: true }))), {
1657
+ const { focusProps, isFocusVisible } = focus.useFocusRing();
1658
+ return /* @__PURE__ */ React__default["default"].createElement("button", __spreadProps$f(__spreadValues$g({}, utils.mergeProps(buttonProps, hoverProps, focusProps, utils.filterDOMProps(props, { global: true }))), {
1659
+ tabIndex: 0,
1543
1660
  ref,
1544
1661
  className: clsx__default["default"](textFieldStyles__default["default"]["sapphire-text-field__stepper-button"], textFieldStyles__default["default"]["js-hover"], {
1545
1662
  [textFieldStyles__default["default"]["is-active"]]: isPressed,
1546
- [textFieldStyles__default["default"]["is-hover"]]: isHovered
1663
+ [textFieldStyles__default["default"]["is-hover"]]: isHovered,
1664
+ [textFieldStyles__default["default"]["is-focus"]]: isFocusVisible
1547
1665
  })
1548
1666
  }), /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Icon, {
1549
1667
  size: size === "lg" ? "md" : "sm"
1550
- }, variant === "increment" ? /* @__PURE__ */ React__default["default"].createElement(react.CaretUp, null) : /* @__PURE__ */ React__default["default"].createElement(react.CaretDown, null)));
1668
+ }, variant === "increment" ? /* @__PURE__ */ React__default["default"].createElement(react.Add, null) : /* @__PURE__ */ React__default["default"].createElement(react.Subtract, null)));
1551
1669
  };
1552
1670
 
1553
1671
  function useAutofillStyle(inputRef) {
@@ -1567,6 +1685,343 @@ function useAutofillStyle(inputRef) {
1567
1685
  };
1568
1686
  }
1569
1687
 
1688
+ const getSeparators = (formatter) => {
1689
+ var _a, _b, _c, _d, _e;
1690
+ const parts = formatter.formatToParts(1000.1);
1691
+ const groupSeparator = (_b = (_a = parts.find((p) => p.type === "group")) == null ? void 0 : _a.value) != null ? _b : ",";
1692
+ let decimalSeparator = (_c = parts.find((p) => p.type === "decimal")) == null ? void 0 : _c.value;
1693
+ if (!decimalSeparator) {
1694
+ const locale = formatter.resolvedOptions().locale;
1695
+ const plainFormatter = new Intl.NumberFormat(locale);
1696
+ decimalSeparator = (_e = (_d = plainFormatter.formatToParts(1.1).find((p) => p.type === "decimal")) == null ? void 0 : _d.value) != null ? _e : ".";
1697
+ }
1698
+ return { groupSeparator, decimalSeparator };
1699
+ };
1700
+ const trimSymbol = (value, symbol) => {
1701
+ if (!symbol)
1702
+ return value;
1703
+ if (value.startsWith(symbol)) {
1704
+ return value.slice(symbol.length).trimStart();
1705
+ } else if (value.endsWith(symbol)) {
1706
+ return value.slice(0, -symbol.length).trimEnd();
1707
+ }
1708
+ return value;
1709
+ };
1710
+ const parseNumericValue = (value, decimalSeparator, formatter) => {
1711
+ if (!value || value === "-")
1712
+ return null;
1713
+ const cleaned = value.replace(new RegExp(`[^0-9${decimalSeparator}\\-]`, "g"), "");
1714
+ if (!cleaned)
1715
+ return null;
1716
+ const hasLeadingMinus = cleaned.startsWith("-");
1717
+ const withoutMinus = cleaned.replace(/-/g, "");
1718
+ const normalized = hasLeadingMinus ? "-" + withoutMinus : withoutMinus;
1719
+ const parts = normalized.split(decimalSeparator);
1720
+ const withStandardDecimal = parts.length > 1 ? parts[0] + "." + parts.slice(1).join("") : normalized.replace(decimalSeparator, ".");
1721
+ let parsed = parseFloat(withStandardDecimal);
1722
+ if (isNaN(parsed))
1723
+ return null;
1724
+ if ((formatter == null ? void 0 : formatter.resolvedOptions().style) === "percent") {
1725
+ parsed /= 100;
1726
+ }
1727
+ return parsed;
1728
+ };
1729
+ const formatNumberString = (value, formatter, decimalSeparator, shouldStripSymbols, symbol) => {
1730
+ if (!value || value === "-" || value === decimalSeparator) {
1731
+ return value;
1732
+ }
1733
+ const hasTrailingDecimal = value.endsWith(decimalSeparator);
1734
+ const numericValue = parseNumericValue(value, decimalSeparator, formatter);
1735
+ if (numericValue === null) {
1736
+ return value.replace(new RegExp(`[^0-9${decimalSeparator}\\-]`, "g"), "");
1737
+ }
1738
+ try {
1739
+ const formatted = formatter.format(numericValue);
1740
+ const result = shouldStripSymbols && symbol ? trimSymbol(formatted, symbol) : formatted;
1741
+ return hasTrailingDecimal && !result.includes(decimalSeparator) ? result + decimalSeparator : result;
1742
+ } catch (_) {
1743
+ return value;
1744
+ }
1745
+ };
1746
+ const isSymbol = (type) => ["currency", "unit", "percentSign"].includes(type);
1747
+ const hasSymbolAt = (parts, start) => {
1748
+ const [first, second] = start ? [parts[0], parts[1]] : [parts[parts.length - 1], parts[parts.length - 2]];
1749
+ return isSymbol(first == null ? void 0 : first.type) || (first == null ? void 0 : first.type) === "literal" && isSymbol(second == null ? void 0 : second.type);
1750
+ };
1751
+ const extractSymbol = (formatter, prefix, postfix) => {
1752
+ var _a, _b;
1753
+ const parts = formatter.formatToParts(1000.1);
1754
+ const extractedPrefix = hasSymbolAt(parts, true) ? ((_a = parts.find((part) => isSymbol(part.type))) == null ? void 0 : _a.value) || null : null;
1755
+ const extractedPostfix = hasSymbolAt(parts, false) ? ((_b = [...parts].reverse().find((part) => isSymbol(part.type))) == null ? void 0 : _b.value) || null : null;
1756
+ return prefix !== void 0 || postfix !== void 0 ? {
1757
+ extractedPrefix: prefix,
1758
+ extractedPostfix: postfix,
1759
+ symbol: extractedPrefix || extractedPostfix || void 0
1760
+ } : {
1761
+ extractedPrefix,
1762
+ extractedPostfix,
1763
+ symbol: extractedPrefix || extractedPostfix || void 0
1764
+ };
1765
+ };
1766
+
1767
+ const isDeleteOperation = (inputType) => {
1768
+ return inputType === "deleteContentBackward" || inputType === "deleteContentForward";
1769
+ };
1770
+ const calculateCursorPosition = (oldValue, newValue, oldCursor, inputType, decimalSeparator, numericValue) => {
1771
+ if (!newValue)
1772
+ return 0;
1773
+ const oldDecimalPos = oldValue.indexOf(decimalSeparator);
1774
+ const newDecimalPos = newValue.indexOf(decimalSeparator);
1775
+ if (numericValue === 0 && isDeleteOperation(inputType)) {
1776
+ return 0;
1777
+ }
1778
+ const countDigits = (str, start, end) => {
1779
+ let count = 0;
1780
+ for (let i = start; i < end; i++) {
1781
+ if (/[0-9]/.test(str[i]))
1782
+ count++;
1783
+ }
1784
+ return count;
1785
+ };
1786
+ if (isDeleteOperation(inputType) && oldDecimalPos >= 0 && oldCursor === oldDecimalPos && newDecimalPos >= 0) {
1787
+ return newDecimalPos;
1788
+ }
1789
+ if (oldDecimalPos >= 0 && oldCursor > oldDecimalPos && newDecimalPos >= 0) {
1790
+ const digitsBeforeCursor = countDigits(oldValue, oldDecimalPos + 1, oldCursor);
1791
+ let digitCount2 = 0;
1792
+ for (let i = newDecimalPos + 1; i < newValue.length; i++) {
1793
+ if (/[0-9]/.test(newValue[i]) && ++digitCount2 === digitsBeforeCursor) {
1794
+ return i + 1;
1795
+ }
1796
+ }
1797
+ return newDecimalPos + 1;
1798
+ }
1799
+ const oldEnd = oldDecimalPos >= 0 ? oldDecimalPos : oldValue.length;
1800
+ const newEnd = newDecimalPos >= 0 ? newDecimalPos : newValue.length;
1801
+ const intDigitsBeforeCursor = countDigits(oldValue, 0, Math.min(oldCursor, oldEnd));
1802
+ if (intDigitsBeforeCursor === 0) {
1803
+ if (isDeleteOperation(inputType)) {
1804
+ for (let i = 0; i < newValue.length; i++) {
1805
+ if (/[0-9]/.test(newValue[i]))
1806
+ return i + 1;
1807
+ }
1808
+ }
1809
+ return 0;
1810
+ }
1811
+ let digitCount = 0;
1812
+ for (let i = 0; i < newEnd; i++) {
1813
+ if (/[0-9]/.test(newValue[i]) && ++digitCount === intDigitsBeforeCursor) {
1814
+ return i + 1;
1815
+ }
1816
+ }
1817
+ return newDecimalPos >= 0 ? newDecimalPos : newValue.length;
1818
+ };
1819
+
1820
+ const escapeRegExp = (str) => str.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
1821
+ const getSuffix = (value, groupSeparator, decimalSeparator) => {
1822
+ var _a;
1823
+ const suffixReg = new RegExp(`\\d([^${escapeRegExp(groupSeparator)}${escapeRegExp(decimalSeparator)}0-9]+)`);
1824
+ return (_a = value.match(suffixReg)) == null ? void 0 : _a[1];
1825
+ };
1826
+ function handleNumberFieldKeyDown({
1827
+ event,
1828
+ inputRef,
1829
+ groupSeparator,
1830
+ decimalSeparator,
1831
+ onOriginalKeyDown
1832
+ }) {
1833
+ var _a;
1834
+ const { key } = event;
1835
+ const input = event.currentTarget;
1836
+ const { selectionStart, value } = input;
1837
+ if (selectionStart === null) {
1838
+ onOriginalKeyDown == null ? void 0 : onOriginalKeyDown(event);
1839
+ return;
1840
+ }
1841
+ if (/^[0-9]$/.test(key)) {
1842
+ const decimalPos = value.indexOf(decimalSeparator);
1843
+ if (selectionStart === 0) {
1844
+ const integerPart = decimalPos >= 0 ? value.slice(0, decimalPos) : value;
1845
+ const cleanedInteger = integerPart.replace(new RegExp(escapeRegExp(groupSeparator), "g"), "");
1846
+ if (cleanedInteger === "0") {
1847
+ event.preventDefault();
1848
+ const newValue = key + (decimalPos >= 0 ? value.slice(decimalPos) : "");
1849
+ input.value = newValue;
1850
+ input.setSelectionRange(1, 1);
1851
+ const inputEvent = new Event("input", { bubbles: true });
1852
+ input.dispatchEvent(inputEvent);
1853
+ return;
1854
+ }
1855
+ }
1856
+ }
1857
+ if (key === decimalSeparator) {
1858
+ const decimalPos = value.indexOf(decimalSeparator);
1859
+ if (decimalPos >= 0 && selectionStart <= decimalPos) {
1860
+ event.preventDefault();
1861
+ input.setSelectionRange(decimalPos + 1, decimalPos + 1);
1862
+ return;
1863
+ }
1864
+ }
1865
+ if (key === "Backspace" && selectionStart > 0 && value[selectionStart - 1] === groupSeparator) {
1866
+ event.preventDefault();
1867
+ let deletePos = selectionStart - 2;
1868
+ while (deletePos >= 0 && value[deletePos] === groupSeparator) {
1869
+ deletePos--;
1870
+ }
1871
+ if (deletePos >= 0) {
1872
+ const newValue = value.slice(0, deletePos) + value.slice(deletePos + 1);
1873
+ input.value = newValue;
1874
+ input.setSelectionRange(deletePos, deletePos);
1875
+ const inputEvent = new Event("input", { bubbles: true });
1876
+ input.dispatchEvent(inputEvent);
1877
+ }
1878
+ return;
1879
+ }
1880
+ if (key === "Backspace" && selectionStart > 0 && value[selectionStart - 1] === decimalSeparator) {
1881
+ event.preventDefault();
1882
+ let deletePos = selectionStart - 2;
1883
+ while (deletePos >= 0 && value[deletePos] === groupSeparator) {
1884
+ deletePos--;
1885
+ }
1886
+ if (deletePos >= 0) {
1887
+ const newValue = value.slice(0, deletePos) + value.slice(deletePos + 1);
1888
+ input.value = newValue;
1889
+ const decimalPos = newValue.indexOf(decimalSeparator);
1890
+ if (decimalPos >= 0) {
1891
+ input.setSelectionRange(decimalPos, decimalPos);
1892
+ }
1893
+ const inputEvent = new Event("input", { bubbles: true });
1894
+ input.dispatchEvent(inputEvent);
1895
+ }
1896
+ return;
1897
+ }
1898
+ if (key === "Delete" && value[selectionStart] === groupSeparator) {
1899
+ event.preventDefault();
1900
+ let deletePos = selectionStart + 1;
1901
+ while (deletePos < value.length && value[deletePos] === groupSeparator) {
1902
+ deletePos++;
1903
+ }
1904
+ if (deletePos < value.length) {
1905
+ const newValue = value.slice(0, deletePos) + value.slice(deletePos + 1);
1906
+ input.value = newValue;
1907
+ input.setSelectionRange(selectionStart, selectionStart);
1908
+ const inputEvent = new Event("input", { bubbles: true });
1909
+ input.dispatchEvent(inputEvent);
1910
+ }
1911
+ return;
1912
+ }
1913
+ if (key === "Delete" && value[selectionStart] === decimalSeparator) {
1914
+ event.preventDefault();
1915
+ let deletePos = selectionStart + 1;
1916
+ while (deletePos < value.length && !/[0-9]/.test(value[deletePos])) {
1917
+ deletePos++;
1918
+ }
1919
+ if (deletePos < value.length) {
1920
+ const newValue = value.slice(0, deletePos) + value.slice(deletePos + 1);
1921
+ input.value = newValue;
1922
+ input.setSelectionRange(selectionStart, selectionStart);
1923
+ const inputEvent = new Event("input", { bubbles: true });
1924
+ input.dispatchEvent(inputEvent);
1925
+ }
1926
+ return;
1927
+ }
1928
+ if (key !== "ArrowUp" && key !== "ArrowDown" && value !== "-") {
1929
+ const suffix = getSuffix(value, groupSeparator, decimalSeparator);
1930
+ if (suffix && selectionStart > value.length - suffix.length) {
1931
+ const suffixStartPos = value.length - suffix.length;
1932
+ (_a = inputRef.current) == null ? void 0 : _a.setSelectionRange(suffixStartPos, suffixStartPos);
1933
+ }
1934
+ }
1935
+ onOriginalKeyDown == null ? void 0 : onOriginalKeyDown(event);
1936
+ }
1937
+
1938
+ function useNumberFieldFormatting({
1939
+ inputRef,
1940
+ formatter,
1941
+ inputValue,
1942
+ prefix,
1943
+ postfix,
1944
+ onOriginalKeyDown,
1945
+ onChange,
1946
+ autoFormat
1947
+ }) {
1948
+ const { groupSeparator, decimalSeparator } = React.useMemo(() => getSeparators(formatter), [formatter]);
1949
+ const [formattedValue, setFormattedValue] = React.useState("");
1950
+ const symbolInfo = React.useMemo(() => extractSymbol(formatter, prefix, postfix), [formatter, prefix, postfix]);
1951
+ const { extractedPrefix, extractedPostfix, symbol } = symbolInfo;
1952
+ const cursorPositionRef = React.useRef(null);
1953
+ const displayValue = React.useMemo(() => {
1954
+ const numericValue = parseNumericValue(inputValue, decimalSeparator, formatter);
1955
+ if (numericValue === null)
1956
+ return inputValue;
1957
+ try {
1958
+ const trimmedValue = trimSymbol(inputValue, symbol) || inputValue;
1959
+ return autoFormat ? formattedValue || trimmedValue : trimmedValue;
1960
+ } catch (e) {
1961
+ return inputValue;
1962
+ }
1963
+ }, [
1964
+ inputValue,
1965
+ symbol,
1966
+ formatter,
1967
+ decimalSeparator,
1968
+ autoFormat,
1969
+ formattedValue
1970
+ ]);
1971
+ React.useLayoutEffect(() => {
1972
+ if (cursorPositionRef.current !== null && inputRef.current) {
1973
+ inputRef.current.setSelectionRange(cursorPositionRef.current, cursorPositionRef.current);
1974
+ cursorPositionRef.current = null;
1975
+ }
1976
+ }, [displayValue, inputRef]);
1977
+ const handleInput = React.useCallback((e) => {
1978
+ if (!autoFormat)
1979
+ return;
1980
+ const input = e.currentTarget;
1981
+ const { value, selectionStart } = input;
1982
+ const inputType = e.nativeEvent.inputType || "";
1983
+ const shouldStrip = !!symbol;
1984
+ const maxFractionDigits = formatter.resolvedOptions().maximumFractionDigits || 0;
1985
+ const decimalIndex = value.indexOf(decimalSeparator);
1986
+ if (decimalIndex !== -1 && selectionStart !== null) {
1987
+ const decimalPart = value.slice(decimalIndex + 1).replace(new RegExp(`[^0-9]`, "g"), "");
1988
+ const prevDecimalIndex = displayValue.indexOf(decimalSeparator);
1989
+ const prevDecimalLength = prevDecimalIndex !== -1 ? displayValue.slice(prevDecimalIndex + 1).length : 0;
1990
+ if (decimalPart.length > maxFractionDigits && selectionStart > decimalIndex + 1 + prevDecimalLength) {
1991
+ e.preventDefault();
1992
+ cursorPositionRef.current = decimalIndex + 1 + prevDecimalLength;
1993
+ return;
1994
+ }
1995
+ }
1996
+ const formattedValue2 = formatNumberString(value, formatter, decimalSeparator, shouldStrip, symbol);
1997
+ setFormattedValue(formattedValue2);
1998
+ const numericValue = parseNumericValue(formattedValue2, decimalSeparator, formatter);
1999
+ if (formattedValue2 !== value && formattedValue2 !== "" && selectionStart !== null) {
2000
+ const newCursorPosition = calculateCursorPosition(value, formattedValue2, selectionStart, inputType, decimalSeparator, numericValue);
2001
+ cursorPositionRef.current = newCursorPosition;
2002
+ }
2003
+ if (numericValue !== null) {
2004
+ onChange == null ? void 0 : onChange(numericValue);
2005
+ }
2006
+ }, [formatter, decimalSeparator, symbol, autoFormat, displayValue, onChange]);
2007
+ const handleKeyDown = React.useCallback((e) => {
2008
+ handleNumberFieldKeyDown({
2009
+ event: e,
2010
+ inputRef,
2011
+ groupSeparator,
2012
+ decimalSeparator,
2013
+ onOriginalKeyDown
2014
+ });
2015
+ }, [groupSeparator, decimalSeparator, inputRef, onOriginalKeyDown]);
2016
+ return {
2017
+ displayValue,
2018
+ extractedPrefix,
2019
+ extractedPostfix,
2020
+ handleInput,
2021
+ handleKeyDown
2022
+ };
2023
+ }
2024
+
1570
2025
  var __defProp$f = Object.defineProperty;
1571
2026
  var __defProps$e = Object.defineProperties;
1572
2027
  var __getOwnPropDescs$e = Object.getOwnPropertyDescriptors;
@@ -1607,7 +2062,7 @@ const useSapphireNumberField = (_a, ref) => {
1607
2062
  const numberFieldAria = numberfield$1.useNumberField(__spreadProps$e(__spreadValues$f({}, numberFieldProps), {
1608
2063
  validationState: error === false || error === void 0 ? void 0 : "invalid"
1609
2064
  }), numberFieldState, ref);
1610
- return numberFieldAria;
2065
+ return __spreadProps$e(__spreadValues$f({}, numberFieldAria), { state: numberFieldState });
1611
2066
  };
1612
2067
 
1613
2068
  var __defProp$e = Object.defineProperty;
@@ -1642,6 +2097,7 @@ var __objRest$c = (source, exclude) => {
1642
2097
  return target;
1643
2098
  };
1644
2099
  const NumberField = React.forwardRef(function NumberField2(props, ref) {
2100
+ var _b;
1645
2101
  const _a = props, {
1646
2102
  label,
1647
2103
  isDisabled,
@@ -1649,15 +2105,15 @@ const NumberField = React.forwardRef(function NumberField2(props, ref) {
1649
2105
  note,
1650
2106
  isRequired,
1651
2107
  contextualHelp,
1652
- prefix,
1653
- postfix,
2108
+ affix = "auto",
1654
2109
  size = "lg",
1655
2110
  labelPlacement = "above",
1656
2111
  necessityIndicator = false,
1657
2112
  alignInputRight,
1658
2113
  showButtons = false,
1659
2114
  incrementAriaLabel,
1660
- decrementAriaLabel
2115
+ decrementAriaLabel,
2116
+ autoFormat = false
1661
2117
  } = _a, otherProps = __objRest$c(_a, [
1662
2118
  "label",
1663
2119
  "isDisabled",
@@ -1665,16 +2121,22 @@ const NumberField = React.forwardRef(function NumberField2(props, ref) {
1665
2121
  "note",
1666
2122
  "isRequired",
1667
2123
  "contextualHelp",
1668
- "prefix",
1669
- "postfix",
2124
+ "affix",
1670
2125
  "size",
1671
2126
  "labelPlacement",
1672
2127
  "necessityIndicator",
1673
2128
  "alignInputRight",
1674
2129
  "showButtons",
1675
2130
  "incrementAriaLabel",
1676
- "decrementAriaLabel"
2131
+ "decrementAriaLabel",
2132
+ "autoFormat"
1677
2133
  ]);
2134
+ const { prefix, postfix } = React.useMemo(() => {
2135
+ if (affix === "auto") {
2136
+ return { prefix: void 0, postfix: void 0 };
2137
+ }
2138
+ return { prefix: affix.prefix, postfix: affix.postfix };
2139
+ }, [affix]);
1678
2140
  sapphireReact.useThemeCheck();
1679
2141
  const inputRef = utils.useObjectRef(props.inputRef);
1680
2142
  const formatMessage = i18n.useMessageFormatter(intlMessages$1);
@@ -1691,6 +2153,24 @@ const NumberField = React.forwardRef(function NumberField2(props, ref) {
1691
2153
  }), inputRef);
1692
2154
  const { focusProps, isFocusVisible } = focus.useFocusRing();
1693
2155
  const { autofillStyles, updateStyle } = useAutofillStyle(inputRef);
2156
+ const { locale } = i18n.useLocale();
2157
+ const formatter = React.useMemo(() => new Intl.NumberFormat(locale, props.formatOptions), [locale, props.formatOptions]);
2158
+ const formattingResult = useNumberFieldFormatting({
2159
+ inputRef,
2160
+ formatter,
2161
+ inputValue: inputProps.value,
2162
+ prefix,
2163
+ postfix,
2164
+ onOriginalKeyDown: inputProps.onKeyDown,
2165
+ onChange: props.onChange,
2166
+ autoFormat
2167
+ });
2168
+ const { extractedPrefix, extractedPostfix, handleInput, handleKeyDown } = autoFormat ? formattingResult : {
2169
+ extractedPrefix: formattingResult.extractedPrefix,
2170
+ extractedPostfix: formattingResult.extractedPostfix,
2171
+ handleInput: void 0,
2172
+ handleKeyDown: inputProps.onKeyDown
2173
+ };
1694
2174
  const containerRef = React.useRef(null);
1695
2175
  React.useImperativeHandle(ref, () => __spreadProps$d(__spreadValues$e({}, utils$1.createFocusableRef(containerRef, inputRef)), {
1696
2176
  getInputElement() {
@@ -1713,32 +2193,38 @@ const NumberField = React.forwardRef(function NumberField2(props, ref) {
1713
2193
  [textFieldStyles__default["default"]["sapphire-text-field--error"]]: error === true || typeof error === "string",
1714
2194
  [textFieldStyles__default["default"]["sapphire-text-field--md"]]: size === "md"
1715
2195
  })
1716
- }, prefix && /* @__PURE__ */ React__default["default"].createElement("span", {
2196
+ }, extractedPrefix && /* @__PURE__ */ React__default["default"].createElement("span", {
1717
2197
  className: clsx__default["default"](textFieldStyles__default["default"]["sapphire-text-field__prefix"], {
1718
- [textFieldStyles__default["default"]["sapphire-text-field__prefix--icon"]]: typeof prefix !== "string"
2198
+ [textFieldStyles__default["default"]["sapphire-text-field__prefix--icon"]]: typeof extractedPrefix !== "string"
1719
2199
  })
1720
- }, prefix), /* @__PURE__ */ React__default["default"].createElement("input", __spreadProps$d(__spreadValues$e({}, utils.mergeProps(inputProps, focusProps, {
2200
+ }, extractedPrefix), /* @__PURE__ */ React__default["default"].createElement("input", __spreadProps$d(__spreadValues$e({}, utils.mergeProps(inputProps, focusProps, {
1721
2201
  onChange: updateStyle,
1722
2202
  onBlur: updateStyle
1723
- })), {
2203
+ }, autoFormat ? {
2204
+ onInput: handleInput,
2205
+ onKeyDown: handleKeyDown
2206
+ } : {})), {
2207
+ value: (_b = formattingResult == null ? void 0 : formattingResult.displayValue) != null ? _b : inputProps.value,
1724
2208
  ref: inputRef,
1725
2209
  className: clsx__default["default"](textFieldStyles__default["default"]["sapphire-text-field__input"], {
1726
2210
  [textFieldStyles__default["default"]["sapphire-text-field__input--align-right"]]: !!alignInputRight
1727
2211
  }),
1728
2212
  style: autofillStyles
1729
- })), postfix && /* @__PURE__ */ React__default["default"].createElement("span", {
2213
+ })), extractedPostfix && /* @__PURE__ */ React__default["default"].createElement("span", {
1730
2214
  className: clsx__default["default"](textFieldStyles__default["default"]["sapphire-text-field__postfix"], {
1731
- [textFieldStyles__default["default"]["sapphire-text-field__postfix--icon"]]: typeof postfix !== "string"
2215
+ [textFieldStyles__default["default"]["sapphire-text-field__postfix--icon"]]: typeof extractedPostfix !== "string"
1732
2216
  })
1733
- }, postfix), showButtons && /* @__PURE__ */ React__default["default"].createElement("div", {
1734
- className: clsx__default["default"](textFieldStyles__default["default"]["sapphire-text-field__stepper"])
2217
+ }, extractedPostfix), showButtons && /* @__PURE__ */ React__default["default"].createElement("div", {
2218
+ className: textFieldStyles__default["default"]["sapphire-text-field__stepper"]
1735
2219
  }, /* @__PURE__ */ React__default["default"].createElement(StepperButton, __spreadValues$e({
1736
- variant: "increment",
1737
- size
1738
- }, incrementButtonProps)), /* @__PURE__ */ React__default["default"].createElement(StepperButton, __spreadValues$e({
1739
2220
  variant: "decrement",
1740
2221
  size
1741
- }, decrementButtonProps))))), (error && typeof error !== "boolean" || note) && /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Footer, null, error && typeof error !== "boolean" ? /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Note, {
2222
+ }, decrementButtonProps)), /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Separator, {
2223
+ orientation: "vertical"
2224
+ }), /* @__PURE__ */ React__default["default"].createElement(StepperButton, __spreadValues$e({
2225
+ variant: "increment",
2226
+ size
2227
+ }, incrementButtonProps))))), (error && typeof error !== "boolean" || note) && /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Footer, null, error && typeof error !== "boolean" ? /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Note, {
1742
2228
  variant: "error"
1743
2229
  }, error) : note ? note : /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null))));
1744
2230
  });
@@ -2015,7 +2501,7 @@ const SidebarContent = (_c) => {
2015
2501
  const responsiveSidebarContext = useResponsiveSidebarContext();
2016
2502
  const isCollapsed = useIsSidebarCollapsed();
2017
2503
  return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, !isCollapsed && /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$b(__spreadValues$c(__spreadValues$c(__spreadValues$c({}, styleProps), utils.filterDOMProps(props, { global: true })), focusWithinProps), {
2018
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar"]),
2504
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar"]),
2019
2505
  tabIndex: -1
2020
2506
  }), header, children), responsiveSidebarContext && /* @__PURE__ */ React__default["default"].createElement(SidebarPanel, {
2021
2507
  header: panelHeader
@@ -2071,7 +2557,7 @@ const SidebarHeader = (_a) => {
2071
2557
  "closeButtonProps"
2072
2558
  ]);
2073
2559
  return /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$a(__spreadValues$b({}, utils.filterDOMProps(props)), {
2074
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar__header"])
2560
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar__header"])
2075
2561
  }), children, closeButtonProps && /* @__PURE__ */ React__default["default"].createElement(sapphireReact.IconButton, __spreadProps$a(__spreadValues$b({}, closeButtonProps), {
2076
2562
  "aria-label": "Close"
2077
2563
  }), /* @__PURE__ */ React__default["default"].createElement(react.CloseLarge, null)));
@@ -2112,7 +2598,7 @@ const SidebarItem = React__default["default"].forwardRef(function SidebarItem2(_
2112
2598
  var _b = _a, { isActive, children } = _b, props = __objRest$8(_b, ["isActive", "children"]);
2113
2599
  const { itemProps } = useSidebar();
2114
2600
  return /* @__PURE__ */ React__default["default"].createElement("li", {
2115
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar__nav-item"])
2601
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar__nav-item"])
2116
2602
  }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Button, __spreadProps$9(__spreadValues$a({
2117
2603
  ref,
2118
2604
  variant: "tertiary",
@@ -2179,7 +2665,7 @@ const SidebarExpandableItem = React__default["default"].forwardRef(function Side
2179
2665
  }
2180
2666
  }, [isOpen]);
2181
2667
  return /* @__PURE__ */ React__default["default"].createElement("li", {
2182
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar__nav-item"])
2668
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar__nav-item"])
2183
2669
  }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Button, __spreadProps$8(__spreadValues$9({
2184
2670
  variant: "tertiary",
2185
2671
  "aria-current": isActive || void 0,
@@ -2222,9 +2708,9 @@ const SecondarySidebar = ({
2222
2708
  timeout: 200
2223
2709
  }, (transitionState) => /* @__PURE__ */ React__default["default"].createElement("div", {
2224
2710
  ref,
2225
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar__secondary-container"], {
2226
- [styles__default$5["default"]["sapphire-sidebar--slide-in"]]: true,
2227
- [styles__default$5["default"]["sapphire-sidebar--slide-out"]]: transitionState === "exiting"
2711
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar__secondary-container"], {
2712
+ [styles__default$6["default"]["sapphire-sidebar--slide-in"]]: true,
2713
+ [styles__default$6["default"]["sapphire-sidebar--slide-out"]]: transitionState === "exiting"
2228
2714
  })
2229
2715
  }, /* @__PURE__ */ React__default["default"].createElement(focus.FocusScope, {
2230
2716
  restoreFocus: true,
@@ -2290,11 +2776,11 @@ const SidebarSection = (_a) => {
2290
2776
  });
2291
2777
  return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement("li", {
2292
2778
  role: "separator",
2293
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar__separator"])
2779
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar__separator"])
2294
2780
  }), /* @__PURE__ */ React__default["default"].createElement("li", __spreadValues$8(__spreadValues$8(__spreadValues$8({}, itemProps), styleProps), utils.filterDOMProps(props, { global: true })), title && /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$7(__spreadValues$8({}, headingProps), {
2295
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar__section-header"])
2781
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar__section-header"])
2296
2782
  }), title), /* @__PURE__ */ React__default["default"].createElement("ul", __spreadProps$7(__spreadValues$8({}, groupProps), {
2297
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar__section"])
2783
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar__section"])
2298
2784
  }), children)));
2299
2785
  };
2300
2786
 
@@ -2340,8 +2826,8 @@ const SidebarBody = (_a) => {
2340
2826
  return /* @__PURE__ */ React__default["default"].createElement(RootNode, __spreadValues$7(__spreadValues$7({
2341
2827
  ref: sidebarBody,
2342
2828
  tabIndex: -1,
2343
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar__body"], {
2344
- [styles__default$5["default"]["sapphire-sidebar__body--scrolled"]]: isScrolled
2829
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar__body"], {
2830
+ [styles__default$6["default"]["sapphire-sidebar__body--scrolled"]]: isScrolled
2345
2831
  })
2346
2832
  }, utils.filterDOMProps(props, { global: true })), scrollCheckProps), children);
2347
2833
  };
@@ -2387,7 +2873,7 @@ const SidebarList = (_a) => {
2387
2873
  ]);
2388
2874
  const RootNode = elementType;
2389
2875
  return /* @__PURE__ */ React__default["default"].createElement(RootNode, __spreadProps$6(__spreadValues$6({}, utils.filterDOMProps(props, { global: true })), {
2390
- className: clsx__default["default"](styles__default$5["default"]["sapphire-sidebar__nav-list"])
2876
+ className: clsx__default["default"](styles__default$6["default"]["sapphire-sidebar__nav-list"])
2391
2877
  }), children);
2392
2878
  };
2393
2879
 
@@ -2438,14 +2924,14 @@ const ProgressIndicator = (props) => {
2438
2924
  const value = Math.min(Math.max(realValue, minValue), maxValue);
2439
2925
  const widthPercentage = value / maxValue * 100;
2440
2926
  return /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$5(__spreadValues$5({}, utils.filterDOMProps(props, { global: true })), {
2441
- className: clsx__default["default"](styles__default$6["default"]["sapphire-progress"])
2927
+ className: clsx__default["default"](styles__default$7["default"]["sapphire-progress"])
2442
2928
  }), /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$5(__spreadValues$5({}, progressBarProps), {
2443
- className: styles__default$6["default"]["sapphire-progress--indicator"],
2929
+ className: styles__default$7["default"]["sapphire-progress--indicator"],
2444
2930
  style: __spreadProps$5(__spreadValues$5({}, styleProps), { width: `${widthPercentage}%` }),
2445
2931
  "aria-label": "aria-label" in props ? props["aria-label"] : void 0,
2446
2932
  "aria-labelledby": "aria-labelledby" in props ? props["aria-labelledby"] : void 0
2447
2933
  })), segments > 1 && /* @__PURE__ */ React__default["default"].createElement("div", {
2448
- className: styles__default$6["default"]["sapphire-progress--segments"]
2934
+ className: styles__default$7["default"]["sapphire-progress--segments"]
2449
2935
  }, Array.from({ length: segments }, (_, index) => /* @__PURE__ */ React__default["default"].createElement("span", {
2450
2936
  key: index
2451
2937
  }))));
@@ -2501,21 +2987,21 @@ const Slider = (_a) => {
2501
2987
  }), /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Context, null, label && /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Label, null, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Label, null, label)), /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Control, null, /* @__PURE__ */ React__default["default"].createElement(reactAriaComponents.Slider, __spreadProps$4(__spreadValues$4({}, props), {
2502
2988
  style: { height: "100%" }
2503
2989
  }), /* @__PURE__ */ React__default["default"].createElement("div", {
2504
- className: clsx__default["default"](styles__default$7["default"]["sapphire-slider"]),
2990
+ className: clsx__default["default"](styles__default$8["default"]["sapphire-slider"]),
2505
2991
  role: "slider"
2506
2992
  }, /* @__PURE__ */ React__default["default"].createElement(reactAriaComponents.SliderTrack, {
2507
- className: ({ isDisabled }) => clsx__default["default"](styles__default$7["default"]["sapphire-slider__track"], {
2508
- [styles__default$7["default"]["is-disabled"]]: isDisabled
2993
+ className: ({ isDisabled }) => clsx__default["default"](styles__default$8["default"]["sapphire-slider__track"], {
2994
+ [styles__default$8["default"]["is-disabled"]]: isDisabled
2509
2995
  })
2510
2996
  }, ({ state }) => /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement("div", {
2511
- className: clsx__default["default"](styles__default$7["default"]["sapphire-slider__track-remaining"])
2997
+ className: clsx__default["default"](styles__default$8["default"]["sapphire-slider__track-remaining"])
2512
2998
  }), /* @__PURE__ */ React__default["default"].createElement("div", {
2513
- className: clsx__default["default"](styles__default$7["default"]["sapphire-slider__track-fill"]),
2999
+ className: clsx__default["default"](styles__default$8["default"]["sapphire-slider__track-fill"]),
2514
3000
  style: { width: state.getThumbPercent(0) * 100 + "%" }
2515
3001
  }), /* @__PURE__ */ React__default["default"].createElement(reactAriaComponents.SliderThumb, {
2516
3002
  name,
2517
- className: (state2) => clsx__default["default"](styles__default$7["default"]["sapphire-slider__thumb"], {
2518
- [styles__default$7["default"]["is-focus"]]: state2.isFocusVisible
3003
+ className: (state2) => clsx__default["default"](styles__default$8["default"]["sapphire-slider__thumb"], {
3004
+ [styles__default$8["default"]["is-focus"]]: state2.isFocusVisible
2519
3005
  }),
2520
3006
  style: ({ state: state2 }) => {
2521
3007
  const percent = Math.min(3 + state2.getThumbPercent(0) * 94, 100);
@@ -2582,41 +3068,49 @@ function Tag(props) {
2582
3068
  ]);
2583
3069
  const { hoverProps, isHovered } = interactions.useHover({ isDisabled });
2584
3070
  const hasAction = otherProps.hasAction;
2585
- return /* @__PURE__ */ React__default["default"].createElement(focus.FocusRing, {
2586
- focusRingClass: styles__default$8["default"]["is-focus"]
2587
- }, /* @__PURE__ */ React__default["default"].createElement("div", __spreadValues$3(__spreadProps$3(__spreadValues$3({
2588
- ref
2589
- }, utils.mergeProps({
2590
- onKeyDown: (e) => {
2591
- if (e.key !== " ") {
2592
- onKeyDown == null ? void 0 : onKeyDown(e);
2593
- } else {
2594
- e.preventDefault();
3071
+ return /* @__PURE__ */ React__default["default"].createElement(sapphireReact.TooltipIfNeeded, {
3072
+ title: item.rendered
3073
+ }, (tooltipRef, tooltipProps) => {
3074
+ const _a2 = tooltipProps || {}, { ref: tooltipTargetRef } = _a2, restTooltipProps = __objRest$2(_a2, ["ref"]);
3075
+ return /* @__PURE__ */ React__default["default"].createElement(focus.FocusRing, {
3076
+ focusRingClass: styles__default$9["default"]["is-focus"]
3077
+ }, /* @__PURE__ */ React__default["default"].createElement("div", __spreadValues$3(__spreadProps$3(__spreadValues$3({
3078
+ ref: utils.mergeRefs(ref, tooltipTargetRef)
3079
+ }, utils.mergeProps({
3080
+ onKeyDown: (e) => {
3081
+ if (e.key !== " ") {
3082
+ onKeyDown == null ? void 0 : onKeyDown(e);
3083
+ } else {
3084
+ e.preventDefault();
3085
+ }
2595
3086
  }
2596
- }
2597
- }, rowProps, hoverProps)), {
2598
- className: clsx__default["default"](styles__default$8["default"]["sapphire-tag"], styles__default$8["default"]["js-focus"], styles__default$8["default"]["js-hover"], {
2599
- [styles__default$8["default"]["sapphire-tag--actionable"]]: hasAction,
2600
- [styles__default$8["default"]["is-active"]]: hasAction && isPressed,
2601
- [styles__default$8["default"]["is-hover"]]: hasAction && isHovered,
2602
- [styles__default$8["default"]["is-disabled"]]: isDisabled
2603
- })
2604
- }), hasError ? { "aria-invalid": true } : {}), /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$3(__spreadValues$3({}, gridCellProps), {
2605
- className: styles__default$8["default"]["sapphire-tag__content"]
2606
- }), hasError && !isDisabled && /* @__PURE__ */ React__default["default"].createElement(IconError, null), item.rendered, !isDisabled && props.allowsRemoving && /* @__PURE__ */ React__default["default"].createElement(RemoveButton, __spreadValues$3({}, removeButtonProps)))));
3087
+ }, rowProps, hoverProps, restTooltipProps)), {
3088
+ className: clsx__default["default"](styles__default$9["default"]["sapphire-tag"], styles__default$9["default"]["js-focus"], styles__default$9["default"]["js-hover"], {
3089
+ [styles__default$9["default"]["sapphire-tag--actionable"]]: hasAction,
3090
+ [styles__default$9["default"]["is-active"]]: hasAction && isPressed,
3091
+ [styles__default$9["default"]["is-hover"]]: hasAction && isHovered,
3092
+ [styles__default$9["default"]["is-disabled"]]: isDisabled
3093
+ })
3094
+ }), hasError ? { "aria-invalid": true } : {}), /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$3(__spreadValues$3({}, gridCellProps), {
3095
+ className: styles__default$9["default"]["sapphire-tag__content"]
3096
+ }), hasError && !isDisabled && /* @__PURE__ */ React__default["default"].createElement(IconError, null), /* @__PURE__ */ React__default["default"].createElement("span", {
3097
+ ref: tooltipRef,
3098
+ className: styles__default$9["default"]["sapphire-tag__label"]
3099
+ }, item.rendered), !isDisabled && props.allowsRemoving && /* @__PURE__ */ React__default["default"].createElement(RemoveButton, __spreadValues$3({}, removeButtonProps)))));
3100
+ });
2607
3101
  }
2608
3102
  function RemoveButton(removeButtonProps) {
2609
3103
  const buttonRef = React.useRef(null);
2610
3104
  const { buttonProps } = button.useButton(removeButtonProps, buttonRef);
2611
3105
  return /* @__PURE__ */ React__default["default"].createElement("button", __spreadProps$3(__spreadValues$3({}, buttonProps), {
2612
- className: clsx__default["default"](styles__default$8["default"]["sapphire-tag__button"], styles__default$8["default"]["js-focus"])
3106
+ className: clsx__default["default"](styles__default$9["default"]["sapphire-tag__button"], styles__default$9["default"]["js-focus"])
2613
3107
  }), /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Icon, {
2614
3108
  size: "sm"
2615
3109
  }, /* @__PURE__ */ React__default["default"].createElement(react.Close, null)));
2616
3110
  }
2617
3111
  const IconError = () => {
2618
3112
  return /* @__PURE__ */ React__default["default"].createElement("span", {
2619
- className: clsx__default["default"](styles__default$8["default"]["sapphire-tag__error-icon"])
3113
+ className: clsx__default["default"](styles__default$9["default"]["sapphire-tag__error-icon"])
2620
3114
  }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Icon, {
2621
3115
  size: "sm"
2622
3116
  }, /* @__PURE__ */ React__default["default"].createElement(react.Error, null)));
@@ -2695,7 +3189,7 @@ function TagGroup(props) {
2695
3189
  contextualHelp
2696
3190
  }), labelText)), /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Control, null, /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$2(__spreadValues$2({}, gridProps), {
2697
3191
  ref,
2698
- className: styles__default$8["default"]["sapphire-tag-group"]
3192
+ className: styles__default$9["default"]["sapphire-tag-group"]
2699
3193
  }), Array.from(state.collection).map((item) => /* @__PURE__ */ React__default["default"].createElement(Tag, {
2700
3194
  key: item.key,
2701
3195
  item,
@@ -2736,7 +3230,7 @@ const TimeSegment = ({ segment, state }) => segment.type === "hour" || segment.t
2736
3230
  });
2737
3231
  const SeparatorSegment = ({ segment }) => /* @__PURE__ */ React__default["default"].createElement("span", {
2738
3232
  "aria-hidden": "true",
2739
- className: clsx__default["default"](styles__default$9["default"]["sapphire-date-field__segment"], styles__default$9["default"]["sapphire-date-field__segment--separator"])
3233
+ className: clsx__default["default"](styles__default$a["default"]["sapphire-date-field__segment"], styles__default$a["default"]["sapphire-date-field__segment--separator"])
2740
3234
  }, segment.text);
2741
3235
  const EditableSegment = ({ segment, state }) => {
2742
3236
  const ref = React.useRef(null);
@@ -2744,8 +3238,8 @@ const EditableSegment = ({ segment, state }) => {
2744
3238
  return /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps$1(__spreadValues$1({}, segmentProps), {
2745
3239
  style: segmentProps.style,
2746
3240
  ref,
2747
- className: clsx__default["default"](styles__default$9["default"]["sapphire-date-field__segment"], {
2748
- [styles__default$9["default"]["sapphire-date-field__segment--filled"]]: !segment.isPlaceholder
3241
+ className: clsx__default["default"](styles__default$a["default"]["sapphire-date-field__segment"], {
3242
+ [styles__default$a["default"]["sapphire-date-field__segment--filled"]]: !segment.isPlaceholder
2749
3243
  })
2750
3244
  }), segment.text);
2751
3245
  };
@@ -2863,14 +3357,14 @@ function _TimeField(_a, ref) {
2863
3357
  necessityIndicator: otherProps.isRequired && necessityIndicator ? "required" : !otherProps.isRequired && necessityIndicator ? "optional" : void 0,
2864
3358
  contextualHelp
2865
3359
  }), otherProps.label))), /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Control, null, /* @__PURE__ */ React__default["default"].createElement("div", {
2866
- className: clsx__default["default"](styles__default$9["default"]["sapphire-date-field"], {
2867
- [styles__default$9["default"]["sapphire-date-field--error"]]: state.isInvalid,
2868
- [styles__default$9["default"]["sapphire-date-field--no-clear-button"]]: noClearButton,
2869
- [styles__default$9["default"]["sapphire-date-field--no-calendar"]]: true,
2870
- [styles__default$9["default"]["sapphire-date-field--md"]]: size === "md"
3360
+ className: clsx__default["default"](styles__default$a["default"]["sapphire-date-field"], {
3361
+ [styles__default$a["default"]["sapphire-date-field--error"]]: state.isInvalid,
3362
+ [styles__default$a["default"]["sapphire-date-field--no-clear-button"]]: noClearButton,
3363
+ [styles__default$a["default"]["sapphire-date-field--no-calendar"]]: true,
3364
+ [styles__default$a["default"]["sapphire-date-field--md"]]: size === "md"
2871
3365
  })
2872
3366
  }, /* @__PURE__ */ React__default["default"].createElement("div", __spreadProps(__spreadValues({}, fieldProps), {
2873
- className: styles__default$9["default"]["sapphire-date-field__input"],
3367
+ className: styles__default$a["default"]["sapphire-date-field__input"],
2874
3368
  ref: timeFieldRef
2875
3369
  }), state.segments.map((segment, i) => /* @__PURE__ */ React__default["default"].createElement(TimeSegment, {
2876
3370
  key: i,
@@ -2880,7 +3374,7 @@ function _TimeField(_a, ref) {
2880
3374
  "aria-label": formatMessage("clear"),
2881
3375
  onPress: () => state.segments.forEach((segment) => state.clearSegment(segment.type)),
2882
3376
  size: size === "md" ? "sm" : "md",
2883
- UNSAFE_className: clsx__default["default"](styles__default$9["default"]["sapphire-date-field__button"], styles__default$9["default"]["sapphire-date-field__button--clear"])
3377
+ UNSAFE_className: clsx__default["default"](styles__default$a["default"]["sapphire-date-field__button"], styles__default$a["default"]["sapphire-date-field__button--clear"])
2884
3378
  }, /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Icon, null, /* @__PURE__ */ React__default["default"].createElement(react.CloseOutline, null))))), !!error && typeof error !== "boolean" || note ? /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Footer, null, !!error && typeof error !== "boolean" ? /* @__PURE__ */ React__default["default"].createElement(sapphireReact.Field.Note, {
2885
3379
  variant: "error"
2886
3380
  }, error) : note ? note : null) : null);
@@ -2894,6 +3388,7 @@ Object.defineProperty(exports, 'useLocale', {
2894
3388
  exports.Accordion = _Accordion;
2895
3389
  exports.AccordionContext = AccordionContext;
2896
3390
  exports.Alert = Alert;
3391
+ exports.Amount = Amount;
2897
3392
  exports.Autocomplete = Autocomplete;
2898
3393
  exports.BreadcrumbItem = BreadcrumbItem;
2899
3394
  exports.Breadcrumbs = Breadcrumbs;