@backstage/ui 0.15.0 → 0.15.1-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,81 @@
1
1
  # @backstage/ui
2
2
 
3
+ ## 0.15.1-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 14a101f: Switch now adapts its track and thumb colors based on the background context of its parent container, and uses the accent token family when selected.
8
+
9
+ **Affected components:** Switch
10
+
11
+ - b33bb24: Added a new `NumberField` component for numeric input with support for min, max, step, and keyboard increment/decrement.
12
+
13
+ **Affected components:** NumberField
14
+
15
+ - 1f709a3: Fixed Header breadcrumb typography so it remains consistent when component styles are loaded in different orders.
16
+
17
+ **Affected components:** Header
18
+
19
+ - 5d80f77: Introduces a new set of semantic color token families — Accent, Announcement, Warning, Negative, and Positive — each providing a consistent set of background, foreground, and border tokens for both light and dark themes. A gray scale (`--bui-gray-1` through `--bui-gray-11`) and updated foreground tokens are also included.
20
+
21
+ The previous tokens remain in place for backward compatibility but are now deprecated and will be removed in a future release.
22
+
23
+ **Migration:**
24
+
25
+ **Neutral backgrounds**
26
+
27
+ The neutral background tokens keep their existing names (`--bui-bg-app`, `--bui-bg-neutral-1` through `--bui-bg-neutral-4`) but are updated with new solid-color values for both light and dark themes. No token renaming is required. The `-hover`, `-pressed`, and `-disabled` interaction variants of these tokens are deprecated and should be removed.
28
+
29
+ **Foreground**
30
+
31
+ | Deprecated | Replacement |
32
+ | ------------------ | ----------------------- |
33
+ | `--bui-fg-danger` | `--bui-fg-negative` |
34
+ | `--bui-fg-success` | `--bui-fg-positive` |
35
+ | `--bui-fg-info` | `--bui-fg-announcement` |
36
+
37
+ **Accent**
38
+
39
+ | Deprecated | Replacement |
40
+ | ------------------------- | -------------------------- |
41
+ | `--bui-bg-solid` | `--bui-accent-bg` |
42
+ | `--bui-bg-solid-hover` | `--bui-accent-bg-hover` |
43
+ | `--bui-bg-solid-disabled` | `--bui-accent-bg-disabled` |
44
+ | `--bui-fg-solid` | `--bui-accent-fg` |
45
+ | `--bui-fg-solid-disabled` | `--bui-accent-fg-disabled` |
46
+
47
+ **Positive**
48
+
49
+ | Deprecated | Replacement |
50
+ | ------------------------ | --------------------------- |
51
+ | `--bui-bg-success` | `--bui-positive-bg-subdued` |
52
+ | `--bui-fg-success-on-bg` | `--bui-positive-fg-subdued` |
53
+ | `--bui-border-success` | `--bui-positive-border` |
54
+
55
+ **Negative**
56
+
57
+ | Deprecated | Replacement |
58
+ | ----------------------- | --------------------------- |
59
+ | `--bui-bg-danger` | `--bui-negative-bg-subdued` |
60
+ | `--bui-fg-danger-on-bg` | `--bui-negative-fg-subdued` |
61
+ | `--bui-border-danger` | `--bui-negative-border` |
62
+
63
+ **Warning**
64
+
65
+ | Deprecated | Replacement |
66
+ | ------------------------ | -------------------------- |
67
+ | `--bui-bg-warning` | `--bui-warning-bg-subdued` |
68
+ | `--bui-fg-warning-on-bg` | `--bui-warning-fg-subdued` |
69
+ | `--bui-border-warning` | `--bui-warning-border` |
70
+
71
+ **Announcement**
72
+
73
+ | Deprecated | Replacement |
74
+ | --------------------- | ------------------------------- |
75
+ | `--bui-bg-info` | `--bui-announcement-bg-subdued` |
76
+ | `--bui-fg-info-on-bg` | `--bui-announcement-fg-subdued` |
77
+ | `--bui-border-info` | `--bui-announcement-border` |
78
+
3
79
  ## 0.15.0
4
80
 
5
81
  ### Minor Changes
@@ -1,7 +1,7 @@
1
1
  import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
2
 
3
- var css_248z = "/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, utilities;\n\n@layer components {\n .Header_bui-HeaderTop__e703821caf.Header_bui-HeaderTop__e703821caf,\n .Header_bui-HeaderContent__e703821caf.Header_bui-HeaderContent__e703821caf {\n flex: none;\n margin-bottom: 0;\n }\n\n .Header_bui-HeaderBottom__e703821caf {\n display: flex;\n flex-direction: column;\n gap: var(--bui-space-3);\n margin-bottom: var(--bui-space-5);\n }\n\n .Header_bui-HeaderBottom__e703821caf.Header_bui-HeaderBottom__e703821caf {\n flex: none;\n margin-bottom: var(--bui-space-5);\n }\n\n .Header_bui-HeaderStickySentinel__e703821caf {\n height: 1px;\n margin-bottom: -1px;\n pointer-events: none;\n }\n\n .Header_bui-HeaderContent__e703821caf {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n gap: var(--bui-space-3);\n padding-top: var(--bui-space-3);\n padding-bottom: var(--bui-space-3);\n }\n\n .Header_bui-HeaderContent__e703821caf[data-has-tags] {\n padding-top: var(--bui-space-2);\n }\n\n .Header_bui-HeaderContent__e703821caf[data-sticky] {\n position: sticky;\n top: 0;\n z-index: 10;\n background-color: var(--bui-bg-app);\n\n &[data-on-bg='neutral-1'] {\n background-color: var(--bui-bg-neutral-1);\n }\n\n &[data-on-bg='neutral-2'] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-3'] {\n background-color: var(--bui-bg-neutral-3);\n }\n }\n\n .Header_bui-HeaderContent__e703821caf[data-sticky]::after {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 1px;\n content: '';\n background-color: var(--bui-border-1);\n opacity: 0;\n transition: opacity 200ms ease;\n }\n\n .Header_bui-HeaderContent__e703821caf[data-stuck]::after {\n opacity: 1;\n }\n\n .Header_bui-HeaderTabsWrapper__e703821caf {\n margin-left: -8px;\n }\n\n .Header_bui-HeaderControls__e703821caf {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n flex-shrink: 0;\n }\n\n .Header_bui-HeaderTitleStack__e703821caf {\n position: relative;\n flex: 1 1 auto;\n height: 1lh;\n min-width: 0;\n font-size: var(--bui-font-size-6);\n line-height: 140%;\n overflow: hidden;\n }\n\n .Header_bui-HeaderBreadcrumbs__e703821caf,\n .Header_bui-HeaderBreadcrumbsSmall__e703821caf {\n position: absolute;\n inset-inline: 0;\n top: 50%;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n min-width: 0;\n transform: translateY(-50%);\n }\n\n .Header_bui-HeaderBreadcrumbsSmall__e703821caf {\n gap: var(--bui-space-1);\n }\n\n .Header_bui-HeaderBreadcrumbs__e703821caf .Header_bui-HeaderBreadcrumbLink__e703821caf,\n .Header_bui-HeaderBreadcrumbsSmall__e703821caf .Header_bui-HeaderBreadcrumbLinkSmall__e703821caf {\n max-width: 240px;\n overflow: hidden;\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-bold);\n line-height: inherit;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .Header_bui-HeaderBreadcrumbs__e703821caf .Header_bui-HeaderBreadcrumbLink__e703821caf {\n font-size: inherit;\n }\n\n .Header_bui-HeaderBreadcrumbsSmall__e703821caf .Header_bui-HeaderBreadcrumbLinkSmall__e703821caf {\n font-size: var(--bui-font-size-4);\n }\n\n .Header_bui-HeaderBreadcrumbSeparator__e703821caf {\n flex-shrink: 0;\n }\n\n .Header_bui-HeaderTitle__e703821caf,\n .Header_bui-HeaderTitleSmall__e703821caf {\n margin: 0;\n padding: 0;\n flex: 1 1 auto;\n min-width: 0;\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-bold);\n line-height: inherit;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .Header_bui-HeaderTitle__e703821caf {\n font-size: inherit;\n }\n\n .Header_bui-HeaderTitleSmall__e703821caf {\n font-size: var(--bui-font-size-4);\n }\n\n .Header_bui-HeaderTags__e703821caf {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .Header_bui-HeaderTag__e703821caf {\n display: flex;\n align-items: center;\n gap: var(--bui-space-2);\n }\n\n .Header_bui-HeaderTag__e703821caf + .Header_bui-HeaderTag__e703821caf::before {\n content: '';\n width: 3px;\n height: 3px;\n border-radius: 50%;\n background-color: var(--bui-fg-secondary);\n flex-shrink: 0;\n }\n\n .Header_bui-HeaderMetaRow__e703821caf {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-5);\n flex-wrap: wrap;\n margin: 0;\n }\n\n .Header_bui-HeaderMetaItem__e703821caf {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n\n dd {\n margin: 0;\n }\n }\n}\n";
4
- var styles = {"bui-HeaderTop":"Header_bui-HeaderTop__e703821caf","bui-HeaderContent":"Header_bui-HeaderContent__e703821caf","bui-HeaderBottom":"Header_bui-HeaderBottom__e703821caf","bui-HeaderStickySentinel":"Header_bui-HeaderStickySentinel__e703821caf","bui-HeaderTabsWrapper":"Header_bui-HeaderTabsWrapper__e703821caf","bui-HeaderControls":"Header_bui-HeaderControls__e703821caf","bui-HeaderTitleStack":"Header_bui-HeaderTitleStack__e703821caf","bui-HeaderBreadcrumbs":"Header_bui-HeaderBreadcrumbs__e703821caf","bui-HeaderBreadcrumbsSmall":"Header_bui-HeaderBreadcrumbsSmall__e703821caf","bui-HeaderBreadcrumbLink":"Header_bui-HeaderBreadcrumbLink__e703821caf","bui-HeaderBreadcrumbLinkSmall":"Header_bui-HeaderBreadcrumbLinkSmall__e703821caf","bui-HeaderBreadcrumbSeparator":"Header_bui-HeaderBreadcrumbSeparator__e703821caf","bui-HeaderTitle":"Header_bui-HeaderTitle__e703821caf","bui-HeaderTitleSmall":"Header_bui-HeaderTitleSmall__e703821caf","bui-HeaderTags":"Header_bui-HeaderTags__e703821caf","bui-HeaderTag":"Header_bui-HeaderTag__e703821caf","bui-HeaderMetaRow":"Header_bui-HeaderMetaRow__e703821caf","bui-HeaderMetaItem":"Header_bui-HeaderMetaItem__e703821caf"};
3
+ var css_248z = "/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, utilities;\n\n@layer components {\n .Header_bui-HeaderTop__f866914784.Header_bui-HeaderTop__f866914784,\n .Header_bui-HeaderContent__f866914784.Header_bui-HeaderContent__f866914784 {\n flex: none;\n margin-bottom: 0;\n }\n\n .Header_bui-HeaderBottom__f866914784 {\n display: flex;\n flex-direction: column;\n gap: var(--bui-space-3);\n margin-bottom: var(--bui-space-5);\n }\n\n .Header_bui-HeaderBottom__f866914784.Header_bui-HeaderBottom__f866914784 {\n flex: none;\n margin-bottom: var(--bui-space-5);\n }\n\n .Header_bui-HeaderStickySentinel__f866914784 {\n height: 1px;\n margin-bottom: -1px;\n pointer-events: none;\n }\n\n .Header_bui-HeaderContent__f866914784 {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n gap: var(--bui-space-3);\n padding-top: var(--bui-space-3);\n padding-bottom: var(--bui-space-3);\n }\n\n .Header_bui-HeaderContent__f866914784[data-has-tags] {\n padding-top: var(--bui-space-2);\n }\n\n .Header_bui-HeaderContent__f866914784[data-sticky] {\n position: sticky;\n top: 0;\n z-index: 10;\n background-color: var(--bui-bg-app);\n\n &[data-on-bg='neutral-1'] {\n background-color: var(--bui-bg-neutral-1);\n }\n\n &[data-on-bg='neutral-2'] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-3'] {\n background-color: var(--bui-bg-neutral-3);\n }\n }\n\n .Header_bui-HeaderContent__f866914784[data-sticky]::after {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 1px;\n content: '';\n background-color: var(--bui-border-1);\n opacity: 0;\n transition: opacity 200ms ease;\n }\n\n .Header_bui-HeaderContent__f866914784[data-stuck]::after {\n opacity: 1;\n }\n\n .Header_bui-HeaderTabsWrapper__f866914784 {\n margin-left: -8px;\n }\n\n .Header_bui-HeaderControls__f866914784 {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n flex-shrink: 0;\n }\n\n .Header_bui-HeaderTitleStack__f866914784 {\n position: relative;\n flex: 1 1 auto;\n height: 1lh;\n min-width: 0;\n font-size: var(--bui-font-size-6);\n line-height: 140%;\n overflow: hidden;\n }\n\n .Header_bui-HeaderBreadcrumbs__f866914784,\n .Header_bui-HeaderBreadcrumbsSmall__f866914784 {\n position: absolute;\n inset-inline: 0;\n top: 50%;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n min-width: 0;\n transform: translateY(-50%);\n }\n\n .Header_bui-HeaderBreadcrumbsSmall__f866914784 {\n gap: var(--bui-space-1);\n }\n\n /*\n * Link variant defaults have the same specificity as these contextual styles.\n * Repeat the slot class so the Header styles win regardless of stylesheet order.\n */\n .Header_bui-HeaderBreadcrumbs__f866914784 .Header_bui-HeaderBreadcrumbLink__f866914784.Header_bui-HeaderBreadcrumbLink__f866914784,\n .Header_bui-HeaderBreadcrumbsSmall__f866914784\n .Header_bui-HeaderBreadcrumbLinkSmall__f866914784.Header_bui-HeaderBreadcrumbLinkSmall__f866914784 {\n max-width: 240px;\n overflow: hidden;\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-bold);\n line-height: inherit;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .Header_bui-HeaderBreadcrumbs__f866914784 .Header_bui-HeaderBreadcrumbLink__f866914784.Header_bui-HeaderBreadcrumbLink__f866914784 {\n font-size: inherit;\n }\n\n .Header_bui-HeaderBreadcrumbsSmall__f866914784\n .Header_bui-HeaderBreadcrumbLinkSmall__f866914784.Header_bui-HeaderBreadcrumbLinkSmall__f866914784 {\n font-size: var(--bui-font-size-4);\n }\n\n .Header_bui-HeaderBreadcrumbSeparator__f866914784 {\n flex-shrink: 0;\n }\n\n .Header_bui-HeaderTitle__f866914784,\n .Header_bui-HeaderTitleSmall__f866914784 {\n margin: 0;\n padding: 0;\n flex: 1 1 auto;\n min-width: 0;\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-bold);\n line-height: inherit;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .Header_bui-HeaderTitle__f866914784 {\n font-size: inherit;\n }\n\n .Header_bui-HeaderTitleSmall__f866914784 {\n font-size: var(--bui-font-size-4);\n }\n\n .Header_bui-HeaderTags__f866914784 {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .Header_bui-HeaderTag__f866914784 {\n display: flex;\n align-items: center;\n gap: var(--bui-space-2);\n }\n\n .Header_bui-HeaderTag__f866914784 + .Header_bui-HeaderTag__f866914784::before {\n content: '';\n width: 3px;\n height: 3px;\n border-radius: 50%;\n background-color: var(--bui-fg-secondary);\n flex-shrink: 0;\n }\n\n .Header_bui-HeaderMetaRow__f866914784 {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-5);\n flex-wrap: wrap;\n margin: 0;\n }\n\n .Header_bui-HeaderMetaItem__f866914784 {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n\n dd {\n margin: 0;\n }\n }\n}\n";
4
+ var styles = {"bui-HeaderTop":"Header_bui-HeaderTop__f866914784","bui-HeaderContent":"Header_bui-HeaderContent__f866914784","bui-HeaderBottom":"Header_bui-HeaderBottom__f866914784","bui-HeaderStickySentinel":"Header_bui-HeaderStickySentinel__f866914784","bui-HeaderTabsWrapper":"Header_bui-HeaderTabsWrapper__f866914784","bui-HeaderControls":"Header_bui-HeaderControls__f866914784","bui-HeaderTitleStack":"Header_bui-HeaderTitleStack__f866914784","bui-HeaderBreadcrumbs":"Header_bui-HeaderBreadcrumbs__f866914784","bui-HeaderBreadcrumbsSmall":"Header_bui-HeaderBreadcrumbsSmall__f866914784","bui-HeaderBreadcrumbLink":"Header_bui-HeaderBreadcrumbLink__f866914784","bui-HeaderBreadcrumbLinkSmall":"Header_bui-HeaderBreadcrumbLinkSmall__f866914784","bui-HeaderBreadcrumbSeparator":"Header_bui-HeaderBreadcrumbSeparator__f866914784","bui-HeaderTitle":"Header_bui-HeaderTitle__f866914784","bui-HeaderTitleSmall":"Header_bui-HeaderTitleSmall__f866914784","bui-HeaderTags":"Header_bui-HeaderTags__f866914784","bui-HeaderTag":"Header_bui-HeaderTag__f866914784","bui-HeaderMetaRow":"Header_bui-HeaderMetaRow__f866914784","bui-HeaderMetaItem":"Header_bui-HeaderMetaItem__f866914784"};
5
5
  styleInject(css_248z);
6
6
 
7
7
  export { styles as default };
@@ -0,0 +1,113 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef, useEffect, useMemo } from 'react';
3
+ import { NumberField as NumberField$1, Group, Input } from 'react-aria-components';
4
+ import { RiSubtractLine, RiAddLine } from '@remixicon/react';
5
+ import { FieldLabel } from '../FieldLabel/FieldLabel.esm.js';
6
+ import { useDefinition } from '../../hooks/useDefinition/useDefinition.esm.js';
7
+ import '../FieldLabel/FieldLabel.module.css.esm.js';
8
+ import { FieldError } from '../FieldError/FieldError.esm.js';
9
+ import '../FieldError/FieldError.module.css.esm.js';
10
+ import { ButtonIcon } from '../ButtonIcon/ButtonIcon.esm.js';
11
+ import '../ButtonIcon/ButtonIcon.module.css.esm.js';
12
+ import { NumberFieldDefinition } from './definition.esm.js';
13
+
14
+ const NumberField = forwardRef(
15
+ (props, ref) => {
16
+ const { ownProps, restProps, dataAttributes } = useDefinition(
17
+ NumberFieldDefinition,
18
+ props
19
+ );
20
+ const { classes, label, icon, secondaryLabel, placeholder, description } = ownProps;
21
+ useEffect(() => {
22
+ if (!label && !restProps["aria-label"] && !restProps["aria-labelledby"]) {
23
+ console.warn(
24
+ "NumberField requires either a visible label, aria-label, or aria-labelledby for accessibility"
25
+ );
26
+ }
27
+ }, [label, restProps["aria-label"], restProps["aria-labelledby"]]);
28
+ const secondaryLabelText = secondaryLabel || (restProps.isRequired ? "Required" : null);
29
+ const formatOptions = useMemo(
30
+ () => ({
31
+ useGrouping: false,
32
+ ...restProps.formatOptions
33
+ }),
34
+ [restProps.formatOptions]
35
+ );
36
+ return /* @__PURE__ */ jsxs(
37
+ NumberField$1,
38
+ {
39
+ className: classes.root,
40
+ ...dataAttributes,
41
+ ...restProps,
42
+ formatOptions,
43
+ ref,
44
+ children: [
45
+ /* @__PURE__ */ jsx(
46
+ FieldLabel,
47
+ {
48
+ label,
49
+ secondaryLabel: secondaryLabelText,
50
+ description,
51
+ descriptionSlot: "description"
52
+ }
53
+ ),
54
+ /* @__PURE__ */ jsxs(
55
+ Group,
56
+ {
57
+ className: classes.inputWrapper,
58
+ "data-size": dataAttributes["data-size"],
59
+ children: [
60
+ icon && /* @__PURE__ */ jsx(
61
+ "div",
62
+ {
63
+ className: classes.inputIcon,
64
+ "data-size": dataAttributes["data-size"],
65
+ "aria-hidden": "true",
66
+ children: icon
67
+ }
68
+ ),
69
+ /* @__PURE__ */ jsx(
70
+ Input,
71
+ {
72
+ className: classes.input,
73
+ ...icon && { "data-icon": true },
74
+ placeholder
75
+ }
76
+ ),
77
+ /* @__PURE__ */ jsxs("div", { className: classes.stepperButtons, children: [
78
+ /* @__PURE__ */ jsx(
79
+ ButtonIcon,
80
+ {
81
+ slot: "decrement",
82
+ variant: "tertiary",
83
+ size: ownProps.size,
84
+ className: classes.stepperButton,
85
+ icon: /* @__PURE__ */ jsx(RiSubtractLine, {}),
86
+ "aria-label": "Decrease"
87
+ }
88
+ ),
89
+ /* @__PURE__ */ jsx(
90
+ ButtonIcon,
91
+ {
92
+ slot: "increment",
93
+ variant: "tertiary",
94
+ size: ownProps.size,
95
+ className: classes.stepperButton,
96
+ icon: /* @__PURE__ */ jsx(RiAddLine, {}),
97
+ "aria-label": "Increase"
98
+ }
99
+ )
100
+ ] })
101
+ ]
102
+ }
103
+ ),
104
+ /* @__PURE__ */ jsx(FieldError, {})
105
+ ]
106
+ }
107
+ );
108
+ }
109
+ );
110
+ NumberField.displayName = "NumberField";
111
+
112
+ export { NumberField };
113
+ //# sourceMappingURL=NumberField.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberField.esm.js","sources":["../../../src/components/NumberField/NumberField.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { forwardRef, useEffect, useMemo } from 'react';\nimport {\n Group,\n Input,\n NumberField as AriaNumberField,\n} from 'react-aria-components';\nimport { RiAddLine, RiSubtractLine } from '@remixicon/react';\nimport { FieldLabel } from '../FieldLabel';\nimport { FieldError } from '../FieldError';\nimport { ButtonIcon } from '../ButtonIcon';\nimport type { NumberFieldProps } from './types';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { NumberFieldDefinition } from './definition';\n\n/**\n * A numeric input with an integrated label, optional icon, and inline error display.\n *\n * @public\n */\nexport const NumberField = forwardRef<HTMLDivElement, NumberFieldProps>(\n (props, ref) => {\n const { ownProps, restProps, dataAttributes } = useDefinition(\n NumberFieldDefinition,\n props,\n );\n const { classes, label, icon, secondaryLabel, placeholder, description } =\n ownProps;\n\n useEffect(() => {\n if (!label && !restProps['aria-label'] && !restProps['aria-labelledby']) {\n console.warn(\n 'NumberField requires either a visible label, aria-label, or aria-labelledby for accessibility',\n );\n }\n }, [label, restProps['aria-label'], restProps['aria-labelledby']]);\n\n const secondaryLabelText =\n secondaryLabel || (restProps.isRequired ? 'Required' : null);\n\n const formatOptions = useMemo(\n () => ({\n useGrouping: false,\n ...restProps.formatOptions,\n }),\n [restProps.formatOptions],\n );\n\n return (\n <AriaNumberField\n className={classes.root}\n {...dataAttributes}\n {...restProps}\n formatOptions={formatOptions}\n ref={ref}\n >\n <FieldLabel\n label={label}\n secondaryLabel={secondaryLabelText}\n description={description}\n descriptionSlot=\"description\"\n />\n <Group\n className={classes.inputWrapper}\n data-size={dataAttributes['data-size']}\n >\n {icon && (\n <div\n className={classes.inputIcon}\n data-size={dataAttributes['data-size']}\n aria-hidden=\"true\"\n >\n {icon}\n </div>\n )}\n <Input\n className={classes.input}\n {...(icon && { 'data-icon': true })}\n placeholder={placeholder}\n />\n <div className={classes.stepperButtons}>\n <ButtonIcon\n slot=\"decrement\"\n variant=\"tertiary\"\n size={ownProps.size}\n className={classes.stepperButton}\n icon={<RiSubtractLine />}\n aria-label=\"Decrease\"\n />\n <ButtonIcon\n slot=\"increment\"\n variant=\"tertiary\"\n size={ownProps.size}\n className={classes.stepperButton}\n icon={<RiAddLine />}\n aria-label=\"Increase\"\n />\n </div>\n </Group>\n <FieldError />\n </AriaNumberField>\n );\n },\n);\n\nNumberField.displayName = 'NumberField';\n"],"names":["AriaNumberField"],"mappings":";;;;;;;;;;;;;AAmCO,MAAM,WAAA,GAAc,UAAA;AAAA,EACzB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,cAAA,EAAe,GAAI,aAAA;AAAA,MAC9C,qBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,MAAM,cAAA,EAAgB,WAAA,EAAa,aAAY,GACrE,QAAA;AAEF,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,SAAS,CAAC,SAAA,CAAU,YAAY,CAAA,IAAK,CAAC,SAAA,CAAU,iBAAiB,CAAA,EAAG;AACvE,QAAA,OAAA,CAAQ,IAAA;AAAA,UACN;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAA,EAAG,CAAC,KAAA,EAAO,SAAA,CAAU,YAAY,CAAA,EAAG,SAAA,CAAU,iBAAiB,CAAC,CAAC,CAAA;AAEjE,IAAA,MAAM,kBAAA,GACJ,cAAA,KAAmB,SAAA,CAAU,UAAA,GAAa,UAAA,GAAa,IAAA,CAAA;AAEzD,IAAA,MAAM,aAAA,GAAgB,OAAA;AAAA,MACpB,OAAO;AAAA,QACL,WAAA,EAAa,KAAA;AAAA,QACb,GAAG,SAAA,CAAU;AAAA,OACf,CAAA;AAAA,MACA,CAAC,UAAU,aAAa;AAAA,KAC1B;AAEA,IAAA,uBACE,IAAA;AAAA,MAACA,aAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAA,CAAQ,IAAA;AAAA,QAClB,GAAG,cAAA;AAAA,QACH,GAAG,SAAA;AAAA,QACJ,aAAA;AAAA,QACA,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA;AAAA,cACA,cAAA,EAAgB,kBAAA;AAAA,cAChB,WAAA;AAAA,cACA,eAAA,EAAgB;AAAA;AAAA,WAClB;AAAA,0BACA,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAW,OAAA,CAAQ,YAAA;AAAA,cACnB,WAAA,EAAW,eAAe,WAAW,CAAA;AAAA,cAEpC,QAAA,EAAA;AAAA,gBAAA,IAAA,oBACC,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,WAAW,OAAA,CAAQ,SAAA;AAAA,oBACnB,WAAA,EAAW,eAAe,WAAW,CAAA;AAAA,oBACrC,aAAA,EAAY,MAAA;AAAA,oBAEX,QAAA,EAAA;AAAA;AAAA,iBACH;AAAA,gCAEF,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,WAAW,OAAA,CAAQ,KAAA;AAAA,oBAClB,GAAI,IAAA,IAAQ,EAAE,WAAA,EAAa,IAAA,EAAK;AAAA,oBACjC;AAAA;AAAA,iBACF;AAAA,gCACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,cAAA,EACtB,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,UAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,WAAA;AAAA,sBACL,OAAA,EAAQ,UAAA;AAAA,sBACR,MAAM,QAAA,CAAS,IAAA;AAAA,sBACf,WAAW,OAAA,CAAQ,aAAA;AAAA,sBACnB,IAAA,sBAAO,cAAA,EAAA,EAAe,CAAA;AAAA,sBACtB,YAAA,EAAW;AAAA;AAAA,mBACb;AAAA,kCACA,GAAA;AAAA,oBAAC,UAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,WAAA;AAAA,sBACL,OAAA,EAAQ,UAAA;AAAA,sBACR,MAAM,QAAA,CAAS,IAAA;AAAA,sBACf,WAAW,OAAA,CAAQ,aAAA;AAAA,sBACnB,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,sBACjB,YAAA,EAAW;AAAA;AAAA;AACb,iBAAA,EACF;AAAA;AAAA;AAAA,WACF;AAAA,8BACC,UAAA,EAAA,EAAW;AAAA;AAAA;AAAA,KACd;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;;"}
@@ -0,0 +1,8 @@
1
+ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
+
3
+ var css_248z = "/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, utilities;\n\n@layer components {\n .NumberField_bui-NumberField__9e112f194d {\n display: flex;\n flex-direction: column;\n font-family: var(--bui-font-regular);\n width: 100%;\n flex-shrink: 0;\n\n &[data-on-bg='neutral-1'] .NumberField_bui-Input__9e112f194d {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-2'] .NumberField_bui-Input__9e112f194d {\n background-color: var(--bui-bg-neutral-3);\n }\n\n &[data-on-bg='neutral-3'] .NumberField_bui-Input__9e112f194d {\n background-color: var(--bui-bg-neutral-4);\n }\n }\n\n .NumberField_bui-InputWrapper__9e112f194d {\n position: relative;\n\n &[data-size='small'] .NumberField_bui-Input__9e112f194d {\n height: 2rem;\n padding-right: 3.5rem;\n }\n\n &[data-size='medium'] .NumberField_bui-Input__9e112f194d {\n height: 2.5rem;\n padding-right: 4.5rem;\n }\n\n &[data-size='small'] .NumberField_bui-Input__9e112f194d[data-icon] {\n padding-left: var(--bui-space-8);\n }\n\n &[data-size='medium'] .NumberField_bui-Input__9e112f194d[data-icon] {\n padding-left: var(--bui-space-9);\n }\n\n &[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n .NumberField_bui-InputIcon__9e112f194d {\n position: absolute;\n left: var(--bui-space-3);\n top: 50%;\n transform: translateY(-50%);\n margin-right: var(--bui-space-1);\n color: var(--bui-fg-primary);\n flex-shrink: 0;\n pointer-events: none;\n /* To animate the icon when the input is collapsed */\n transition: left 0.2s ease-in-out;\n\n &[data-size='small'],\n &[data-size='small'] svg {\n width: 1rem;\n height: 1rem;\n }\n\n &[data-size='medium'],\n &[data-size='medium'] svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n }\n\n .NumberField_bui-Input__9e112f194d {\n display: flex;\n align-items: center;\n padding: 0 var(--bui-space-3);\n border-radius: var(--bui-radius-2);\n border: none;\n background-color: var(--bui-bg-neutral-1);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n color: var(--bui-fg-primary);\n transition: box-shadow 0.2s ease-in-out;\n width: 100%;\n height: 100%;\n cursor: inherit;\n\n &[data-focused] {\n outline: none;\n box-shadow: inset 0 0 0 1px var(--bui-ring);\n }\n\n &::placeholder {\n color: var(--bui-fg-secondary);\n }\n\n &[data-invalid] {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n }\n\n .NumberField_bui-StepperButtons__9e112f194d {\n position: absolute;\n right: var(--bui-space-1);\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n }\n\n .NumberField_bui-NumberField__9e112f194d .NumberField_bui-StepperButton__9e112f194d {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n .NumberField_bui-NumberField__9e112f194d[data-size='medium'] .NumberField_bui-StepperButton__9e112f194d {\n width: 2rem;\n height: 2rem;\n }\n}\n";
4
+ var styles = {"bui-NumberField":"NumberField_bui-NumberField__9e112f194d","bui-Input":"NumberField_bui-Input__9e112f194d","bui-InputWrapper":"NumberField_bui-InputWrapper__9e112f194d","bui-InputIcon":"NumberField_bui-InputIcon__9e112f194d","bui-StepperButtons":"NumberField_bui-StepperButtons__9e112f194d","bui-StepperButton":"NumberField_bui-StepperButton__9e112f194d"};
5
+ styleInject(css_248z);
6
+
7
+ export { styles as default };
8
+ //# sourceMappingURL=NumberField.module.css.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberField.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,34 @@
1
+ import 'react/jsx-runtime';
2
+ import 'clsx';
3
+ import '../../hooks/useBreakpoint.esm.js';
4
+ import '../../hooks/useBg.esm.js';
5
+ import '../../hooks/useDefinition/helpers.esm.js';
6
+ import '../../analytics/useAnalytics.esm.js';
7
+ import 'react-router-dom';
8
+ import { defineComponent } from '../../hooks/useDefinition/defineComponent.esm.js';
9
+ import styles from './NumberField.module.css.esm.js';
10
+
11
+ const NumberFieldDefinition = defineComponent()({
12
+ styles,
13
+ classNames: {
14
+ root: "bui-NumberField",
15
+ inputWrapper: "bui-InputWrapper",
16
+ input: "bui-Input",
17
+ inputIcon: "bui-InputIcon",
18
+ stepperButtons: "bui-StepperButtons",
19
+ stepperButton: "bui-StepperButton"
20
+ },
21
+ bg: "consumer",
22
+ propDefs: {
23
+ size: { dataAttribute: true, default: "small" },
24
+ className: {},
25
+ icon: {},
26
+ placeholder: {},
27
+ label: {},
28
+ description: {},
29
+ secondaryLabel: {}
30
+ }
31
+ });
32
+
33
+ export { NumberFieldDefinition };
34
+ //# sourceMappingURL=definition.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.esm.js","sources":["../../../src/components/NumberField/definition.ts"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineComponent } from '../../hooks/useDefinition';\nimport type { NumberFieldOwnProps } from './types';\nimport styles from './NumberField.module.css';\n\n/**\n * Component definition for NumberField\n * @public\n */\nexport const NumberFieldDefinition = defineComponent<NumberFieldOwnProps>()({\n styles,\n classNames: {\n root: 'bui-NumberField',\n inputWrapper: 'bui-InputWrapper',\n input: 'bui-Input',\n inputIcon: 'bui-InputIcon',\n stepperButtons: 'bui-StepperButtons',\n stepperButton: 'bui-StepperButton',\n },\n bg: 'consumer',\n propDefs: {\n size: { dataAttribute: true, default: 'small' },\n className: {},\n icon: {},\n placeholder: {},\n label: {},\n description: {},\n secondaryLabel: {},\n },\n});\n"],"names":[],"mappings":";;;;;;;;;;AAwBO,MAAM,qBAAA,GAAwB,iBAAqC,CAAE;AAAA,EAC1E,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,iBAAA;AAAA,IACN,YAAA,EAAc,kBAAA;AAAA,IACd,KAAA,EAAO,WAAA;AAAA,IACP,SAAA,EAAW,eAAA;AAAA,IACX,cAAA,EAAgB,oBAAA;AAAA,IAChB,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,EAAE,aAAA,EAAe,IAAA,EAAM,SAAS,OAAA,EAAQ;AAAA,IAC9C,WAAW,EAAC;AAAA,IACZ,MAAM,EAAC;AAAA,IACP,aAAa,EAAC;AAAA,IACd,OAAO,EAAC;AAAA,IACR,aAAa,EAAC;AAAA,IACd,gBAAgB;AAAC;AAErB,CAAC;;;;"}
@@ -6,12 +6,24 @@ import { SwitchDefinition } from './definition.esm.js';
6
6
 
7
7
  const Switch = forwardRef(
8
8
  (props, ref) => {
9
- const { ownProps, restProps } = useDefinition(SwitchDefinition, props);
9
+ const { ownProps, restProps, dataAttributes } = useDefinition(
10
+ SwitchDefinition,
11
+ props
12
+ );
10
13
  const { classes, label } = ownProps;
11
- return /* @__PURE__ */ jsxs(Switch$1, { className: classes.root, ref, ...restProps, children: [
12
- /* @__PURE__ */ jsx("div", { className: classes.indicator }),
13
- label
14
- ] });
14
+ return /* @__PURE__ */ jsxs(
15
+ Switch$1,
16
+ {
17
+ className: classes.root,
18
+ ref,
19
+ ...dataAttributes,
20
+ ...restProps,
21
+ children: [
22
+ /* @__PURE__ */ jsx("div", { className: classes.indicator }),
23
+ label
24
+ ]
25
+ }
26
+ );
15
27
  }
16
28
  );
17
29
  Switch.displayName = "Switch";
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.esm.js","sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { forwardRef } from 'react';\nimport { Switch as AriaSwitch } from 'react-aria-components';\nimport type { SwitchProps } from './types';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { SwitchDefinition } from './definition';\n\n/**\n * A toggle control for switching between on and off states, with an optional visible label.\n *\n * @public\n */\nexport const Switch = forwardRef<HTMLLabelElement, SwitchProps>(\n (props, ref) => {\n const { ownProps, restProps } = useDefinition(SwitchDefinition, props);\n const { classes, label } = ownProps;\n\n return (\n <AriaSwitch className={classes.root} ref={ref} {...restProps}>\n <div className={classes.indicator} />\n {label}\n </AriaSwitch>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["AriaSwitch"],"mappings":";;;;;;AA2BO,MAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAU,GAAI,aAAA,CAAc,kBAAkB,KAAK,CAAA;AACrE,IAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,QAAA;AAE3B,IAAA,4BACGA,QAAA,EAAA,EAAW,SAAA,EAAW,QAAQ,IAAA,EAAM,GAAA,EAAW,GAAG,SAAA,EACjD,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,SAAA,EAAW,CAAA;AAAA,MAClC;AAAA,KAAA,EACH,CAAA;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;;;;"}
1
+ {"version":3,"file":"Switch.esm.js","sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { forwardRef } from 'react';\nimport { Switch as AriaSwitch } from 'react-aria-components';\nimport type { SwitchProps } from './types';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { SwitchDefinition } from './definition';\n\n/**\n * A toggle control for switching between on and off states, with an optional visible label.\n *\n * @public\n */\nexport const Switch = forwardRef<HTMLLabelElement, SwitchProps>(\n (props, ref) => {\n const { ownProps, restProps, dataAttributes } = useDefinition(\n SwitchDefinition,\n props,\n );\n const { classes, label } = ownProps;\n\n return (\n <AriaSwitch\n className={classes.root}\n ref={ref}\n {...dataAttributes}\n {...restProps}\n >\n <div className={classes.indicator} />\n {label}\n </AriaSwitch>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["AriaSwitch"],"mappings":";;;;;;AA2BO,MAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,cAAA,EAAe,GAAI,aAAA;AAAA,MAC9C,gBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,QAAA;AAE3B,IAAA,uBACE,IAAA;AAAA,MAACA,QAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAA,CAAQ,IAAA;AAAA,QACnB,GAAA;AAAA,QACC,GAAG,cAAA;AAAA,QACH,GAAG,SAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,SAAA,EAAW,CAAA;AAAA,UAClC;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;;;;"}
@@ -1,7 +1,7 @@
1
1
  import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
2
 
3
- var css_248z = "/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, utilities;\n\n@layer components {\n .Switch_bui-Switch__0f8c351c37 {\n display: flex;\n /* This is needed so the HiddenInput is positioned correctly */\n position: relative;\n align-items: center;\n gap: var(--bui-space-3);\n font-size: var(--bui-font-size-3);\n color: var(--bui-fg-primary);\n cursor: pointer;\n\n &[data-disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n\n &[data-pressed] .Switch_bui-SwitchIndicator__0f8c351c37 {\n &:before {\n background: var(--bui-fg-solid);\n }\n }\n\n &[data-selected] {\n .Switch_bui-SwitchIndicator__0f8c351c37 {\n background: var(--bui-bg-solid);\n\n &:before {\n background: var(--bui-fg-solid);\n transform: translateX(100%);\n }\n }\n\n &[data-pressed] {\n .Switch_indicator__0f8c351c37 {\n background: var(--bui-bg-neutral-3);\n }\n }\n }\n\n &[data-focus-visible] .Switch_bui-SwitchIndicator__0f8c351c37 {\n outline: 2px solid;\n outline-offset: 2px;\n }\n }\n\n .Switch_bui-SwitchIndicator__0f8c351c37 {\n width: 2rem;\n height: 1.143rem;\n border: 2px;\n background: var(--bui-bg-neutral-3);\n border-radius: 1.143rem;\n transition: all 200ms;\n\n &:before {\n content: '';\n display: block;\n margin: 0.143rem;\n width: 0.857rem;\n height: 0.857rem;\n background: var(--bui-fg-solid);\n border-radius: 16px;\n transition: all 200ms;\n }\n }\n}\n";
4
- var styles = {"bui-Switch":"Switch_bui-Switch__0f8c351c37","bui-SwitchIndicator":"Switch_bui-SwitchIndicator__0f8c351c37","indicator":"Switch_indicator__0f8c351c37"};
3
+ var css_248z = "/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, utilities;\n\n@layer components {\n .Switch_bui-Switch__2f8b39dbc2 {\n --switch-indicator-bg: var(--bui-gray-4);\n\n [data-theme-mode='dark'] & {\n --switch-indicator-bg: var(--bui-gray-6);\n }\n\n display: flex;\n /* This is needed so the HiddenInput is positioned correctly */\n position: relative;\n align-items: center;\n gap: var(--bui-space-3);\n font-size: var(--bui-font-size-3);\n color: var(--bui-fg-primary);\n cursor: pointer;\n\n &[data-disabled] {\n --switch-thumb-bg: var(--bui-gray-3);\n\n &[data-on-bg='neutral-1'] {\n --switch-thumb-bg: var(--bui-gray-2);\n }\n\n &[data-on-bg='neutral-2'] {\n --switch-thumb-bg: var(--bui-gray-3);\n }\n\n &[data-on-bg='neutral-3'] {\n --switch-thumb-bg: var(--bui-gray-2);\n }\n\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n\n [data-theme-mode='dark'] &[data-disabled] {\n --switch-thumb-bg: var(--bui-gray-5);\n }\n\n &[data-selected] {\n .Switch_bui-SwitchIndicator__2f8b39dbc2 {\n background: var(--bui-accent-bg);\n\n &:before {\n background: var(--bui-accent-fg);\n transform: translateX(100%);\n }\n }\n\n &[data-disabled] {\n .Switch_bui-SwitchIndicator__2f8b39dbc2 {\n background: var(--bui-accent-bg-disabled);\n\n &:before {\n background: var(--bui-accent-fg-disabled);\n }\n }\n }\n\n &[data-pressed] {\n .Switch_indicator__2f8b39dbc2 {\n background: var(--bui-bg-neutral-3);\n }\n }\n }\n\n &[data-focus-visible] .Switch_bui-SwitchIndicator__2f8b39dbc2 {\n outline: 2px solid;\n outline-offset: 2px;\n }\n }\n\n .Switch_bui-SwitchIndicator__2f8b39dbc2 {\n width: 2rem;\n height: 1.143rem;\n border: 2px;\n background: var(--switch-indicator-bg);\n border-radius: 1.143rem;\n transition: all 200ms;\n\n &:before {\n content: '';\n display: block;\n margin: 0.143rem;\n width: 0.857rem;\n height: 0.857rem;\n background: var(--switch-thumb-bg, var(--bui-accent-fg));\n border-radius: 16px;\n transition: all 200ms;\n }\n }\n}\n";
4
+ var styles = {"bui-Switch":"Switch_bui-Switch__2f8b39dbc2","bui-SwitchIndicator":"Switch_bui-SwitchIndicator__2f8b39dbc2","indicator":"Switch_indicator__2f8b39dbc2"};
5
5
  styleInject(css_248z);
6
6
 
7
7
  export { styles as default };
@@ -14,6 +14,7 @@ const SwitchDefinition = defineComponent()({
14
14
  root: "bui-Switch",
15
15
  indicator: "bui-SwitchIndicator"
16
16
  },
17
+ bg: "consumer",
17
18
  propDefs: {
18
19
  label: {},
19
20
  className: {}
@@ -1 +1 @@
1
- {"version":3,"file":"definition.esm.js","sources":["../../../src/components/Switch/definition.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineComponent } from '../../hooks/useDefinition';\nimport type { SwitchOwnProps } from './types';\nimport styles from './Switch.module.css';\n\n/**\n * Component definition for Switch\n * @public\n */\nexport const SwitchDefinition = defineComponent<SwitchOwnProps>()({\n styles,\n classNames: {\n root: 'bui-Switch',\n indicator: 'bui-SwitchIndicator',\n },\n propDefs: {\n label: {},\n className: {},\n },\n});\n"],"names":[],"mappings":";;;;;;;;;;AAwBO,MAAM,gBAAA,GAAmB,iBAAgC,CAAE;AAAA,EAChE,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,YAAA;AAAA,IACN,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAO,EAAC;AAAA,IACR,WAAW;AAAC;AAEhB,CAAC;;;;"}
1
+ {"version":3,"file":"definition.esm.js","sources":["../../../src/components/Switch/definition.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineComponent } from '../../hooks/useDefinition';\nimport type { SwitchOwnProps } from './types';\nimport styles from './Switch.module.css';\n\n/**\n * Component definition for Switch\n * @public\n */\nexport const SwitchDefinition = defineComponent<SwitchOwnProps>()({\n styles,\n classNames: {\n root: 'bui-Switch',\n indicator: 'bui-SwitchIndicator',\n },\n bg: 'consumer',\n propDefs: {\n label: {},\n className: {},\n },\n});\n"],"names":[],"mappings":";;;;;;;;;;AAwBO,MAAM,gBAAA,GAAmB,iBAAgC,CAAE;AAAA,EAChE,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,YAAA;AAAA,IACN,SAAA,EAAW;AAAA,GACb;AAAA,EACA,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAU;AAAA,IACR,OAAO,EAAC;AAAA,IACR,WAAW;AAAC;AAEhB,CAAC;;;;"}
@@ -85,150 +85,266 @@
85
85
  --bui-radius-6: calc(1.25rem);
86
86
  --bui-radius-full: 9999px;
87
87
 
88
+ /* Animations */
89
+ --bui-animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
90
+
88
91
  /* Base Colors */
89
92
  --bui-black: #000000;
90
93
  --bui-white: #ffffff;
94
+ --bui-ring: #1f5493;
95
+ --bui-scrollbar: #a0a0a03b;
96
+ --bui-scrollbar-thumb: #a0a0a0;
97
+
98
+ /* Gray scale */
99
+ --bui-gray-1: #fafafa;
100
+ --bui-gray-2: #f5f5f5;
101
+ --bui-gray-3: #e5e5e5;
102
+ --bui-gray-4: #d4d4d4;
103
+ --bui-gray-5: #a1a1a1;
104
+ --bui-gray-6: #737373;
105
+ --bui-gray-7: #525252;
106
+ --bui-gray-8: #404040;
107
+ --bui-gray-9: #262626;
108
+ --bui-gray-10: #171717;
109
+ --bui-gray-11: #0a0a0a;
110
+
111
+ /* Neutral background colors */
112
+ --bui-bg-app: #f5f5f5;
113
+ --bui-bg-neutral-1: var(--bui-white);
114
+ --bui-bg-neutral-2: #f7f7f7;
115
+ --bui-bg-neutral-3: var(--bui-white);
116
+ --bui-bg-neutral-4: #f7f7f7;
91
117
 
92
- /* Solid background colors */
118
+ /* Foreground colors */
119
+ --bui-fg-primary: var(--bui-black);
120
+ --bui-fg-secondary: #696969;
121
+ --bui-fg-disabled: #aaaaaa;
122
+ --bui-fg-positive: #1abc54;
123
+ --bui-fg-negative: #ee3a4c;
124
+ --bui-fg-warning: #f18900;
125
+ --bui-fg-announcement: #2a86f3;
126
+
127
+ /* Border colors */
128
+ --bui-border-1: var(--bui-gray-3);
129
+ --bui-border-2: var(--bui-gray-6);
130
+
131
+ /* Accent */
132
+ --bui-accent-bg: #1f5493;
133
+ --bui-accent-bg-hover: #163a66;
134
+ --bui-accent-bg-disabled: #163a66;
135
+ --bui-accent-fg: #ffffff;
136
+ --bui-accent-fg-disabled: #98a8bc;
137
+
138
+ /* Announcement */
139
+ --bui-announcement-bg: #0d72ea;
140
+ --bui-announcement-bg-hover: #2b88f5;
141
+ --bui-announcement-bg-disabled: #0d72ea;
142
+ --bui-announcement-bg-subdued: #c8e0fc;
143
+ --bui-announcement-bg-subdued-hover: #e0edfd;
144
+ --bui-announcement-bg-subdued-disabled: #c8e0fc;
145
+ --bui-announcement-border: #549ef4;
146
+ --bui-announcement-fg: #ffffff;
147
+ --bui-announcement-fg-disabled: #a4ccfb;
148
+ --bui-announcement-fg-subdued: #173da6;
149
+ --bui-announcement-fg-subdued-disabled: #7391e3;
150
+
151
+ /* Warning */
152
+ --bui-warning-bg: #ff9400;
153
+ --bui-warning-bg-hover: #ffb656;
154
+ --bui-warning-bg-disabled: #ff9400;
155
+ --bui-warning-bg-subdued: #ffedd5;
156
+ --bui-warning-bg-subdued-hover: #f8ddb9;
157
+ --bui-warning-bg-subdued-disabled: #f8ddb9;
158
+ --bui-warning-border: #ff9400;
159
+ --bui-warning-fg: #000000;
160
+ --bui-warning-fg-disabled: #aa4d00;
161
+ --bui-warning-fg-subdued: #aa4d00;
162
+ --bui-warning-fg-subdued-disabled: #e3a572;
163
+
164
+ /* Negative */
165
+ --bui-negative-bg: #dc2626;
166
+ --bui-negative-bg-hover: #f44b4b;
167
+ --bui-negative-bg-disabled: #ff8686;
168
+ --bui-negative-bg-subdued: #ffcbcb;
169
+ --bui-negative-bg-subdued-hover: #f7b6b6;
170
+ --bui-negative-bg-subdued-disabled: #f7b6b6;
171
+ --bui-negative-border: #d06565;
172
+ --bui-negative-fg: #ffffff;
173
+ --bui-negative-fg-disabled: #f7b6b6;
174
+ --bui-negative-fg-subdued: #991919;
175
+ --bui-negative-fg-subdued-disabled: #bb7272;
176
+
177
+ /* Positive */
178
+ --bui-positive-bg: #1ed760;
179
+ --bui-positive-bg-hover: #3be477;
180
+ --bui-positive-bg-disabled: #1abc54;
181
+ --bui-positive-bg-subdued: #96f0b6;
182
+ --bui-positive-bg-subdued-hover: #c5f7d7;
183
+ --bui-positive-bg-subdued-disabled: #96f0b6;
184
+ --bui-positive-border: #54a671;
185
+ --bui-positive-fg: #000000;
186
+ --bui-positive-fg-disabled: #0c632b;
187
+ --bui-positive-fg-subdued: #0c632b;
188
+ --bui-positive-fg-subdued-disabled: #4b9666;
189
+
190
+ /* Deprecated tokens */
93
191
  --bui-bg-solid: #1f5493;
94
192
  --bui-bg-solid-hover: #163a66;
95
193
  --bui-bg-solid-pressed: #0f2b4e;
96
194
  --bui-bg-solid-disabled: #163a66;
97
-
98
- /* Neutral background colors */
99
- --bui-bg-app: #f8f8f8;
100
-
101
- --bui-bg-neutral-1: #fff;
102
195
  --bui-bg-neutral-1-hover: oklch(0% 0 0 / 6%);
103
196
  --bui-bg-neutral-1-pressed: oklch(0% 0 0 / 12%);
104
197
  --bui-bg-neutral-1-disabled: oklch(0% 0 0 / 6%);
105
-
106
- --bui-bg-neutral-2: oklch(0% 0 0 / 6%);
107
198
  --bui-bg-neutral-2-hover: oklch(0% 0 0 / 12%);
108
199
  --bui-bg-neutral-2-pressed: oklch(0% 0 0 / 16%);
109
200
  --bui-bg-neutral-2-disabled: oklch(0% 0 0 / 6%);
110
-
111
- --bui-bg-neutral-3: oklch(0% 0 0 / 6%);
112
201
  --bui-bg-neutral-3-hover: oklch(0% 0 0 / 12%);
113
202
  --bui-bg-neutral-3-pressed: oklch(0% 0 0 / 16%);
114
203
  --bui-bg-neutral-3-disabled: oklch(0% 0 0 / 6%);
115
-
116
- --bui-bg-neutral-4: oklch(0% 0 0 / 6%);
117
204
  --bui-bg-neutral-4-hover: oklch(0% 0 0 / 12%);
118
205
  --bui-bg-neutral-4-pressed: oklch(0% 0 0 / 16%);
119
206
  --bui-bg-neutral-4-disabled: oklch(0% 0 0 / 6%);
120
-
121
- /* Status background colors */
122
207
  --bui-bg-danger: #ffe2e2;
123
208
  --bui-bg-warning: #ffedd5;
124
209
  --bui-bg-success: #dcfce7;
125
210
  --bui-bg-info: #dbeafe;
126
-
127
- /* Foreground colors */
128
- --bui-fg-primary: var(--bui-black);
129
- --bui-fg-secondary: oklch(0% 0 0 / 50%);
130
- --bui-fg-disabled: oklch(0% 0 0 / 28%);
131
211
  --bui-fg-solid: var(--bui-white);
132
212
  --bui-fg-solid-disabled: #98a8bc;
133
-
134
- /* Foreground Statuses */
135
213
  --bui-fg-danger-on-bg: #991919;
136
214
  --bui-fg-warning-on-bg: #92310a;
137
215
  --bui-fg-success-on-bg: #116932;
138
216
  --bui-fg-info-on-bg: #173da6;
139
217
  --bui-fg-danger: #ec3b18;
140
- --bui-fg-warning: #ef7a32;
141
218
  --bui-fg-success: #1aaf4f;
142
219
  --bui-fg-info: #0d74ce;
143
-
144
- /* Border colors */
145
- --bui-border-1: #d5d5d5;
146
- --bui-border-2: #bababa;
147
220
  --bui-border-info: #7ea9d6;
148
221
  --bui-border-danger: #f87a7a;
149
222
  --bui-border-warning: #e36d05;
150
223
  --bui-border-success: #53db83;
151
-
152
- /* Special colors */
153
- --bui-ring: #1f5493;
154
- --bui-scrollbar: #a0a0a03b;
155
- --bui-scrollbar-thumb: #a0a0a0;
156
-
157
- /* Shadows */
158
224
  --bui-shadow: 0 10px 15px -3px rgba(0 0 0 / 0.1),
159
225
  0 4px 6px -4px rgba(0 0 0 / 0.1);
160
-
161
- --bui-animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
162
226
  }
163
227
 
164
228
  /* Dark theme tokens */
165
229
  [data-theme-mode='dark'] {
166
- /* Solid background colors */
167
- --bui-bg-solid: #9cc9ff;
168
- --bui-bg-solid-hover: #83b9fd;
169
- --bui-bg-solid-pressed: #83b9fd;
170
- --bui-bg-solid-disabled: #1b3d68;
230
+ /* Base colors */
231
+ --bui-ring: #1f5493;
232
+ --bui-scrollbar: #3636363a;
233
+ --bui-scrollbar-thumb: #575757;
171
234
 
172
235
  /* Neutral background colors */
173
236
  --bui-bg-app: #333333;
237
+ --bui-bg-neutral-1: #1a1a1a;
238
+ --bui-bg-neutral-2: #282828;
239
+ --bui-bg-neutral-3: #393939;
240
+ --bui-bg-neutral-4: #474747;
174
241
 
175
- --bui-bg-neutral-1: oklch(100% 0 0 / 10%);
242
+ /* Foreground colors */
243
+ --bui-fg-primary: var(--bui-white);
244
+ --bui-fg-secondary: #a3a3a3;
245
+ --bui-fg-disabled: #707070;
246
+ --bui-fg-positive: #21b656;
247
+ --bui-fg-negative: #ee3a4c;
248
+ --bui-fg-warning: #f18900;
249
+ --bui-fg-announcement: #2a86f3;
250
+
251
+ /* Border colors */
252
+ --bui-border-1: var(--bui-gray-6);
253
+ --bui-border-2: var(--bui-gray-5);
254
+
255
+ /* Accent */
256
+ --bui-accent-bg: #9cc9ff;
257
+ --bui-accent-bg-hover: #83b9fd;
258
+ --bui-accent-bg-disabled: #3b6293;
259
+ --bui-accent-fg: #101821;
260
+ --bui-accent-fg-disabled: #6191cc;
261
+
262
+ /* Announcement */
263
+ --bui-announcement-bg: #0d72ea;
264
+ --bui-announcement-bg-hover: #2b88f5;
265
+ --bui-announcement-bg-disabled: #0d72ea;
266
+ --bui-announcement-bg-subdued: #052a56;
267
+ --bui-announcement-bg-subdued-hover: #0c3d77;
268
+ --bui-announcement-bg-subdued-disabled: #052a56;
269
+ --bui-announcement-border: #2363af;
270
+ --bui-announcement-fg: #ffffff;
271
+ --bui-announcement-fg-disabled: #70b8ff;
272
+ --bui-announcement-fg-subdued: #70b8ff;
273
+ --bui-announcement-fg-subdued-disabled: #4275a6;
274
+
275
+ /* Warning */
276
+ --bui-warning-bg: #ffa42c;
277
+ --bui-warning-bg-hover: #ffb656;
278
+ --bui-warning-bg-disabled: #ffb656;
279
+ --bui-warning-bg-subdued: #491e00;
280
+ --bui-warning-bg-subdued-hover: #612901;
281
+ --bui-warning-bg-subdued-disabled: #582400;
282
+ --bui-warning-border: #7c4903;
283
+ --bui-warning-fg: #000000;
284
+ --bui-warning-fg-disabled: #aa4d00;
285
+ --bui-warning-fg-subdued: #f2ab4a;
286
+ --bui-warning-fg-subdued-disabled: #aa4d00;
287
+
288
+ /* Negative */
289
+ --bui-negative-bg: #dc2626;
290
+ --bui-negative-bg-hover: #f44b4b;
291
+ --bui-negative-bg-disabled: #dc2626;
292
+ --bui-negative-bg-subdued: #350708;
293
+ --bui-negative-bg-subdued-hover: #5e1a1b;
294
+ --bui-negative-bg-subdued-disabled: #5e1a1b;
295
+ --bui-negative-border: #6f101c;
296
+ --bui-negative-fg: #ffffff;
297
+ --bui-negative-fg-disabled: #f7b6b6;
298
+ --bui-negative-fg-subdued: #fca5a5;
299
+ --bui-negative-fg-subdued-disabled: #bb7272;
300
+
301
+ /* Positive */
302
+ --bui-positive-bg: #1ed760;
303
+ --bui-positive-bg-hover: #3be477;
304
+ --bui-positive-bg-disabled: #1abc54;
305
+ --bui-positive-bg-subdued: #073116;
306
+ --bui-positive-bg-subdued-hover: #0b431f;
307
+ --bui-positive-bg-subdued-disabled: #073116;
308
+ --bui-positive-border: #136d33;
309
+ --bui-positive-fg: #000000;
310
+ --bui-positive-fg-disabled: #0c632b;
311
+ --bui-positive-fg-subdued: #8ddeaa;
312
+ --bui-positive-fg-subdued-disabled: #509c6b;
313
+
314
+ /* Deprecated tokens */
315
+ --bui-bg-solid: #9cc9ff;
316
+ --bui-bg-solid-hover: #83b9fd;
317
+ --bui-bg-solid-pressed: #83b9fd;
318
+ --bui-bg-solid-disabled: #1b3d68;
176
319
  --bui-bg-neutral-1-hover: oklch(100% 0 0 / 14%);
177
320
  --bui-bg-neutral-1-pressed: oklch(100% 0 0 / 20%);
178
321
  --bui-bg-neutral-1-disabled: oklch(100% 0 0 / 10%);
179
-
180
- --bui-bg-neutral-2: oklch(100% 0 0 / 6%);
181
322
  --bui-bg-neutral-2-hover: oklch(100% 0 0 / 10%);
182
323
  --bui-bg-neutral-2-pressed: oklch(100% 0 0 / 16%);
183
324
  --bui-bg-neutral-2-disabled: oklch(100% 0 0 / 6%);
184
-
185
- --bui-bg-neutral-3: oklch(100% 0 0 / 8%);
186
325
  --bui-bg-neutral-3-hover: oklch(100% 0 0 / 12%);
187
326
  --bui-bg-neutral-3-pressed: oklch(100% 0 0 / 20%);
188
327
  --bui-bg-neutral-3-disabled: oklch(100% 0 0 / 8%);
189
-
190
- --bui-bg-neutral-4: oklch(100% 0 0 / 8%);
191
328
  --bui-bg-neutral-4-hover: oklch(100% 0 0 / 12%);
192
329
  --bui-bg-neutral-4-pressed: oklch(100% 0 0 / 20%);
193
330
  --bui-bg-neutral-4-disabled: oklch(100% 0 0 / 8%);
194
-
195
- /* Status background colors */
196
331
  --bui-bg-danger: #300c0c;
197
332
  --bui-bg-warning: #302008;
198
333
  --bui-bg-success: #042713;
199
334
  --bui-bg-info: #132049;
200
-
201
- /* Foreground colors */
202
- --bui-fg-primary: var(--bui-white);
203
- --bui-fg-secondary: oklch(100% 0 0 / 50%);
204
- --bui-fg-disabled: oklch(100% 0 0 / 28%);
205
335
  --bui-fg-solid: #101821;
206
336
  --bui-fg-solid-disabled: #6191cc;
207
-
208
- /* Foreground statuses */
209
337
  --bui-fg-danger-on-bg: #fca5a5;
210
338
  --bui-fg-warning-on-bg: #fdba74;
211
339
  --bui-fg-success-on-bg: #86efac;
212
340
  --bui-fg-info-on-bg: #a3cfff;
213
341
  --bui-fg-danger: #ff5a30;
214
- --bui-fg-warning: #ffa057;
215
342
  --bui-fg-success: #1ed760;
216
343
  --bui-fg-info: #70b8ff;
217
-
218
- /* Border colors */
219
- --bui-border-1: #434343;
220
- --bui-border-2: #585858;
221
344
  --bui-border-info: #7ea9d6;
222
345
  --bui-border-danger: #f87a7a;
223
346
  --bui-border-warning: #e36d05;
224
347
  --bui-border-success: #53db83;
225
-
226
- /* Special colors */
227
- --bui-ring: #1f5493;
228
- --bui-scrollbar: #3636363a;
229
- --bui-scrollbar-thumb: #575757;
230
-
231
- /* Shadows */
232
348
  --bui-shadow: none;
233
349
  }
234
350
  }
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { CSSProperties, ReactNode, HTMLAttributes, ComponentPropsWithoutRef, ReactElement, ElementType, ComponentPropsWithRef, ComponentProps } from 'react';
3
- import { DisclosureProps, DisclosureGroupProps, DisclosurePanelProps, HeadingProps, ButtonProps as ButtonProps$1, DatePickerProps as DatePickerProps$1, DateRangePickerProps as DateRangePickerProps$1, ModalOverlayProps, DialogTriggerProps as DialogTriggerProps$1, TabProps as TabProps$1, TabListProps as TabListProps$1, TabPanelProps as TabPanelProps$1, TabsProps as TabsProps$1, LinkProps as LinkProps$1, CheckboxProps as CheckboxProps$1, CheckboxGroupProps as CheckboxGroupProps$1, SelectProps as SelectProps$1, ComboBoxProps, RadioProps as RadioProps$1, RadioGroupProps as RadioGroupProps$1, SliderProps as SliderProps$1, CellProps as CellProps$1, ColumnProps as ColumnProps$1, RowProps as RowProps$1, TableProps as TableProps$1, TableBodyProps as TableBodyProps$1, TableHeaderProps as TableHeaderProps$1, TagProps as TagProps$1, TagListProps, TagGroupProps as TagGroupProps$1, TextFieldProps as TextFieldProps$1, TooltipProps as TooltipProps$1, TooltipTriggerComponentProps, PopoverProps as PopoverProps$1, MenuProps as MenuProps$1, ListBoxProps, MenuItemProps as MenuItemProps$1, ListBoxItemProps, MenuSectionProps as MenuSectionProps$1, SeparatorProps, MenuTriggerProps as MenuTriggerProps$1, SubmenuTriggerProps as SubmenuTriggerProps$1, SearchFieldProps as SearchFieldProps$1, GridListProps, GridListItemProps, SwitchProps as SwitchProps$1, ToggleButtonProps as ToggleButtonProps$1, ToggleButtonGroupProps as ToggleButtonGroupProps$1 } from 'react-aria-components';
3
+ import { DisclosureProps, DisclosureGroupProps, DisclosurePanelProps, HeadingProps, ButtonProps as ButtonProps$1, DatePickerProps as DatePickerProps$1, DateRangePickerProps as DateRangePickerProps$1, ModalOverlayProps, DialogTriggerProps as DialogTriggerProps$1, TabProps as TabProps$1, TabListProps as TabListProps$1, TabPanelProps as TabPanelProps$1, TabsProps as TabsProps$1, LinkProps as LinkProps$1, CheckboxProps as CheckboxProps$1, CheckboxGroupProps as CheckboxGroupProps$1, SelectProps as SelectProps$1, ComboBoxProps, RadioProps as RadioProps$1, RadioGroupProps as RadioGroupProps$1, SliderProps as SliderProps$1, CellProps as CellProps$1, ColumnProps as ColumnProps$1, RowProps as RowProps$1, TableProps as TableProps$1, TableBodyProps as TableBodyProps$1, TableHeaderProps as TableHeaderProps$1, TagProps as TagProps$1, TagListProps, TagGroupProps as TagGroupProps$1, TextFieldProps as TextFieldProps$1, NumberFieldProps as NumberFieldProps$1, TooltipProps as TooltipProps$1, TooltipTriggerComponentProps, PopoverProps as PopoverProps$1, MenuProps as MenuProps$1, ListBoxProps, MenuItemProps as MenuItemProps$1, ListBoxItemProps, MenuSectionProps as MenuSectionProps$1, SeparatorProps, MenuTriggerProps as MenuTriggerProps$1, SubmenuTriggerProps as SubmenuTriggerProps$1, SearchFieldProps as SearchFieldProps$1, GridListProps, GridListItemProps, SwitchProps as SwitchProps$1, ToggleButtonProps as ToggleButtonProps$1, ToggleButtonGroupProps as ToggleButtonGroupProps$1 } from 'react-aria-components';
4
4
  import { DateValue } from '@internationalized/date';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { NavigateOptions } from 'react-router-dom';
@@ -3148,6 +3148,68 @@ declare const TextFieldDefinition: {
3148
3148
  };
3149
3149
  };
3150
3150
 
3151
+ /** @public */
3152
+ type NumberFieldOwnProps = {
3153
+ /**
3154
+ * The size of the number field
3155
+ * @defaultValue 'small'
3156
+ */
3157
+ size?: 'small' | 'medium' | Partial<Record<Breakpoint, 'small' | 'medium'>>;
3158
+ className?: string;
3159
+ /**
3160
+ * An icon to render before the input
3161
+ */
3162
+ icon?: ReactNode;
3163
+ /**
3164
+ * Text to display in the input when it has no value
3165
+ */
3166
+ placeholder?: string;
3167
+ label?: FieldLabelProps['label'];
3168
+ description?: FieldLabelProps['description'];
3169
+ secondaryLabel?: FieldLabelProps['secondaryLabel'];
3170
+ };
3171
+ /** @public */
3172
+ interface NumberFieldProps extends Omit<NumberFieldProps$1, 'className' | 'description'>, NumberFieldOwnProps {
3173
+ }
3174
+
3175
+ /**
3176
+ * A numeric input with an integrated label, optional icon, and inline error display.
3177
+ *
3178
+ * @public
3179
+ */
3180
+ declare const NumberField: react.ForwardRefExoticComponent<NumberFieldProps & react.RefAttributes<HTMLDivElement>>;
3181
+
3182
+ /**
3183
+ * Component definition for NumberField
3184
+ * @public
3185
+ */
3186
+ declare const NumberFieldDefinition: {
3187
+ readonly styles: {
3188
+ readonly [key: string]: string;
3189
+ };
3190
+ readonly classNames: {
3191
+ readonly root: "bui-NumberField";
3192
+ readonly inputWrapper: "bui-InputWrapper";
3193
+ readonly input: "bui-Input";
3194
+ readonly inputIcon: "bui-InputIcon";
3195
+ readonly stepperButtons: "bui-StepperButtons";
3196
+ readonly stepperButton: "bui-StepperButton";
3197
+ };
3198
+ readonly bg: "consumer";
3199
+ readonly propDefs: {
3200
+ readonly size: {
3201
+ readonly dataAttribute: true;
3202
+ readonly default: "small";
3203
+ };
3204
+ readonly className: {};
3205
+ readonly icon: {};
3206
+ readonly placeholder: {};
3207
+ readonly label: {};
3208
+ readonly description: {};
3209
+ readonly secondaryLabel: {};
3210
+ };
3211
+ };
3212
+
3151
3213
  /** @public */
3152
3214
  type PasswordFieldOwnProps = {
3153
3215
  /**
@@ -3947,6 +4009,7 @@ declare const SwitchDefinition: {
3947
4009
  readonly root: "bui-Switch";
3948
4010
  readonly indicator: "bui-SwitchIndicator";
3949
4011
  };
4012
+ readonly bg: "consumer";
3950
4013
  readonly propDefs: {
3951
4014
  readonly label: {};
3952
4015
  readonly className: {};
@@ -4206,5 +4269,5 @@ declare function useAnalytics(): AnalyticsTracker;
4206
4269
  */
4207
4270
  declare function getNodeText(node: ReactNode | ((...args: any[]) => ReactNode)): string | undefined;
4208
4271
 
4209
- export { Accordion, AccordionDefinition, AccordionGroup, AccordionGroupDefinition, AccordionPanel, AccordionPanelDefinition, AccordionTrigger, AccordionTriggerDefinition, Alert, AlertDefinition, Avatar, AvatarDefinition, BUIProvider, Badge, BadgeDefinition, BgProvider, Box, BoxDefinition, Button, ButtonDefinition, ButtonIcon, ButtonIconDefinition, ButtonLink, ButtonLinkDefinition, Card, CardBody, CardBodyDefinition, CardDefinition, CardFooter, CardFooterDefinition, CardHeader, CardHeaderDefinition, Cell, CellProfile, CellText, Checkbox, CheckboxDefinition, CheckboxGroup, CheckboxGroupDefinition, Column, Combobox, ComboboxDefinition, ComboboxInputDefinition, ComboboxListBoxDefinition, ComboboxListBoxItemDefinition, ComboboxSectionDefinition, Container, ContainerDefinition, DatePicker, DatePickerCalendarDefinition, DatePickerDefinition, DatePickerGroupDefinition, DateRangePicker, DateRangePickerDefinition, Dialog, DialogBody, DialogBodyDefinition, DialogDefinition, DialogFooter, DialogFooterDefinition, DialogHeader, DialogHeaderDefinition, DialogTrigger, FieldLabel, FieldLabelDefinition, Flex, FlexDefinition, FullPage, FullPageDefinition, Grid, GridDefinition, GridItemDefinition, Header, HeaderDefinition, HeaderMetadataStatus, HeaderMetadataUsers, HeaderNavDefinition, HeaderNavGroupDefinition, HeaderNavItemDefinition, HeaderPage, HeaderPageDefinition, Link, LinkDefinition, List, ListDefinition, ListRow, ListRowDefinition, Menu, MenuAutocomplete, MenuAutocompleteListbox, MenuDefinition, MenuItem, MenuListBox, MenuListBoxItem, MenuSection, MenuSeparator, MenuTrigger, PasswordField, PasswordFieldDefinition, PluginHeader, PluginHeaderDefinition, Popover, PopoverDefinition, Radio, RadioDefinition, RadioGroup, RadioGroupDefinition, Row, SearchAutocomplete, SearchAutocompleteDefinition, SearchAutocompleteItem, SearchField, SearchFieldDefinition, Select, SelectDefinition, Skeleton, SkeletonDefinition, Slider, SliderDefinition, SubmenuTrigger, Switch, SwitchDefinition, Tab, TabList, TabPanel, Table, TableBody, TableBodySkeleton, TableDefinition, TableHeader, TablePagination, TablePaginationDefinition, TableRoot, Tabs, TabsDefinition, Tag, TagGroup, TagGroupDefinition, Text, TextDefinition, TextField, TextFieldDefinition, ToggleButton, ToggleButtonDefinition, ToggleButtonGroup, ToggleButtonGroupDefinition, Tooltip, TooltipDefinition, TooltipTrigger, VisuallyHidden, VisuallyHiddenDefinition, getNodeText, useAnalytics, useBgConsumer, useBgProvider, useBreakpoint, useTable };
4210
- export type { AccordionGroupOwnProps, AccordionGroupProps, AccordionOwnProps, AccordionPanelOwnProps, AccordionPanelProps, AccordionProps, AccordionTriggerOwnProps, AccordionTriggerProps, AlertOwnProps, AlertProps, AlignItems, AnalyticsEventAttributes, AnalyticsTracker, AvatarOwnProps, AvatarProps, BUIProviderProps, BadgeOwnProps, BadgeProps, BgContextValue, BgProviderProps, Border, BorderRadius, BoxOwnProps, BoxProps, BoxUtilityProps, Breakpoint, ButtonIconOwnProps, ButtonIconProps, ButtonLinkOwnProps, ButtonLinkProps, ButtonOwnProps, ButtonProps, CardBaseProps, CardBodyOwnProps, CardBodyProps, CardButtonVariant, CardFooterOwnProps, CardFooterProps, CardHeaderOwnProps, CardHeaderProps, CardLinkVariant, CardOwnProps, CardProps, CardStaticVariant, CellOwnProps, CellProfileOwnProps, CellProfileProps, CellProps, CellTextOwnProps, CellTextProps, CheckboxGroupOwnProps, CheckboxGroupProps, CheckboxOwnProps, CheckboxProps, ColumnConfig, ColumnOwnProps, ColumnProps, Columns, ComboboxOwnProps, ComboboxProps, CompletePaginationOptions, ContainerBg, ContainerOwnProps, ContainerProps, CursorParams, CursorResponse, DatePickerOwnProps, DatePickerProps, DateRangePickerOwnProps, DateRangePickerProps, DialogBodyOwnProps, DialogBodyProps, DialogFooterOwnProps, DialogFooterProps, DialogHeaderOwnProps, DialogHeaderProps, DialogOwnProps, DialogProps, DialogTriggerProps, Display, FieldLabelOwnProps, FieldLabelProps, FilterState, FlexDirection, FlexItemProps, FlexOwnProps, FlexProps, FlexWrap, FullPageOwnProps, FullPageProps, GridItemOwnProps, GridItemProps, GridOwnProps, GridProps, HeaderBreadcrumb, HeaderMetadataItem, HeaderMetadataStatusProps, HeaderMetadataUser, HeaderNavTab, HeaderNavTabGroup, HeaderNavTabItem, HeaderOwnProps, HeaderPageBreadcrumb, HeaderPageOwnProps, HeaderPageProps, HeaderProps, HeaderTab, HeaderTag, JustifyContent, LinkOwnProps, LinkProps, ListOwnProps, ListProps, ListRowOwnProps, ListRowProps, MarginProps, MenuAutocompleteListBoxOwnProps, MenuAutocompleteListBoxProps, MenuAutocompleteOwnProps, MenuAutocompleteProps, MenuItemOwnProps, MenuItemProps, MenuListBoxItemOwnProps, MenuListBoxItemProps, MenuListBoxOwnProps, MenuListBoxProps, MenuOwnProps, MenuPopoverOwnProps, MenuProps, MenuSectionOwnProps, MenuSectionProps, MenuSeparatorOwnProps, MenuSeparatorProps, MenuTriggerProps, NoPagination, OffsetParams, OffsetResponse, Option, OptionSection, PaddingProps, PagePagination, PageSizeOption, PaginationOptions, PasswordFieldOwnProps, PasswordFieldProps, PluginHeaderOwnProps, PluginHeaderProps, PopoverOwnProps, PopoverProps, ProviderBg, QueryOptions, RadioGroupOwnProps, RadioGroupProps, RadioOwnProps, RadioProps, Responsive, RowConfig, RowOwnProps, RowProps, RowRenderFn, SearchAutocompleteItemOwnProps, SearchAutocompleteItemProps, SearchAutocompleteOwnProps, SearchAutocompleteProps, SearchFieldOwnProps, SearchFieldProps, SearchState, SelectOwnProps, SelectProps, SkeletonOwnProps, SkeletonProps, SliderOwnProps, SliderProps, SortDescriptor, SortState, Space, SpaceProps, SubmenuTriggerProps, SwitchOwnProps, SwitchProps, TabListOwnProps, TabListProps, TabMatchStrategy, TabOwnProps, TabPanelOwnProps, TabPanelProps, TabProps, TableBodyOwnProps, TableBodyProps, TableHeaderOwnProps, TableHeaderProps, TableItem, TablePaginationOwnProps, TablePaginationProps, TablePaginationType, TableProps, TableRootOwnProps, TableRootProps, TableSelection, TabsOwnProps, TabsProps, TagGroupOwnProps, TagGroupProps, TagOwnProps, TagProps, TextColorStatus, TextColors, TextFieldOwnProps, TextFieldProps, TextOwnProps, TextProps, TextVariants, TextWeights, ToggleButtonGroupOwnProps, ToggleButtonGroupProps, ToggleButtonOwnProps, ToggleButtonProps, TooltipOwnProps, TooltipProps, UseAnalyticsFn, UseTableCompleteOptions, UseTableCursorOptions, UseTableOffsetOptions, UseTableOptions, UseTableResult, UtilityProps, VirtualizedProp, VisuallyHiddenOwnProps, VisuallyHiddenProps };
4272
+ export { Accordion, AccordionDefinition, AccordionGroup, AccordionGroupDefinition, AccordionPanel, AccordionPanelDefinition, AccordionTrigger, AccordionTriggerDefinition, Alert, AlertDefinition, Avatar, AvatarDefinition, BUIProvider, Badge, BadgeDefinition, BgProvider, Box, BoxDefinition, Button, ButtonDefinition, ButtonIcon, ButtonIconDefinition, ButtonLink, ButtonLinkDefinition, Card, CardBody, CardBodyDefinition, CardDefinition, CardFooter, CardFooterDefinition, CardHeader, CardHeaderDefinition, Cell, CellProfile, CellText, Checkbox, CheckboxDefinition, CheckboxGroup, CheckboxGroupDefinition, Column, Combobox, ComboboxDefinition, ComboboxInputDefinition, ComboboxListBoxDefinition, ComboboxListBoxItemDefinition, ComboboxSectionDefinition, Container, ContainerDefinition, DatePicker, DatePickerCalendarDefinition, DatePickerDefinition, DatePickerGroupDefinition, DateRangePicker, DateRangePickerDefinition, Dialog, DialogBody, DialogBodyDefinition, DialogDefinition, DialogFooter, DialogFooterDefinition, DialogHeader, DialogHeaderDefinition, DialogTrigger, FieldLabel, FieldLabelDefinition, Flex, FlexDefinition, FullPage, FullPageDefinition, Grid, GridDefinition, GridItemDefinition, Header, HeaderDefinition, HeaderMetadataStatus, HeaderMetadataUsers, HeaderNavDefinition, HeaderNavGroupDefinition, HeaderNavItemDefinition, HeaderPage, HeaderPageDefinition, Link, LinkDefinition, List, ListDefinition, ListRow, ListRowDefinition, Menu, MenuAutocomplete, MenuAutocompleteListbox, MenuDefinition, MenuItem, MenuListBox, MenuListBoxItem, MenuSection, MenuSeparator, MenuTrigger, NumberField, NumberFieldDefinition, PasswordField, PasswordFieldDefinition, PluginHeader, PluginHeaderDefinition, Popover, PopoverDefinition, Radio, RadioDefinition, RadioGroup, RadioGroupDefinition, Row, SearchAutocomplete, SearchAutocompleteDefinition, SearchAutocompleteItem, SearchField, SearchFieldDefinition, Select, SelectDefinition, Skeleton, SkeletonDefinition, Slider, SliderDefinition, SubmenuTrigger, Switch, SwitchDefinition, Tab, TabList, TabPanel, Table, TableBody, TableBodySkeleton, TableDefinition, TableHeader, TablePagination, TablePaginationDefinition, TableRoot, Tabs, TabsDefinition, Tag, TagGroup, TagGroupDefinition, Text, TextDefinition, TextField, TextFieldDefinition, ToggleButton, ToggleButtonDefinition, ToggleButtonGroup, ToggleButtonGroupDefinition, Tooltip, TooltipDefinition, TooltipTrigger, VisuallyHidden, VisuallyHiddenDefinition, getNodeText, useAnalytics, useBgConsumer, useBgProvider, useBreakpoint, useTable };
4273
+ export type { AccordionGroupOwnProps, AccordionGroupProps, AccordionOwnProps, AccordionPanelOwnProps, AccordionPanelProps, AccordionProps, AccordionTriggerOwnProps, AccordionTriggerProps, AlertOwnProps, AlertProps, AlignItems, AnalyticsEventAttributes, AnalyticsTracker, AvatarOwnProps, AvatarProps, BUIProviderProps, BadgeOwnProps, BadgeProps, BgContextValue, BgProviderProps, Border, BorderRadius, BoxOwnProps, BoxProps, BoxUtilityProps, Breakpoint, ButtonIconOwnProps, ButtonIconProps, ButtonLinkOwnProps, ButtonLinkProps, ButtonOwnProps, ButtonProps, CardBaseProps, CardBodyOwnProps, CardBodyProps, CardButtonVariant, CardFooterOwnProps, CardFooterProps, CardHeaderOwnProps, CardHeaderProps, CardLinkVariant, CardOwnProps, CardProps, CardStaticVariant, CellOwnProps, CellProfileOwnProps, CellProfileProps, CellProps, CellTextOwnProps, CellTextProps, CheckboxGroupOwnProps, CheckboxGroupProps, CheckboxOwnProps, CheckboxProps, ColumnConfig, ColumnOwnProps, ColumnProps, Columns, ComboboxOwnProps, ComboboxProps, CompletePaginationOptions, ContainerBg, ContainerOwnProps, ContainerProps, CursorParams, CursorResponse, DatePickerOwnProps, DatePickerProps, DateRangePickerOwnProps, DateRangePickerProps, DialogBodyOwnProps, DialogBodyProps, DialogFooterOwnProps, DialogFooterProps, DialogHeaderOwnProps, DialogHeaderProps, DialogOwnProps, DialogProps, DialogTriggerProps, Display, FieldLabelOwnProps, FieldLabelProps, FilterState, FlexDirection, FlexItemProps, FlexOwnProps, FlexProps, FlexWrap, FullPageOwnProps, FullPageProps, GridItemOwnProps, GridItemProps, GridOwnProps, GridProps, HeaderBreadcrumb, HeaderMetadataItem, HeaderMetadataStatusProps, HeaderMetadataUser, HeaderNavTab, HeaderNavTabGroup, HeaderNavTabItem, HeaderOwnProps, HeaderPageBreadcrumb, HeaderPageOwnProps, HeaderPageProps, HeaderProps, HeaderTab, HeaderTag, JustifyContent, LinkOwnProps, LinkProps, ListOwnProps, ListProps, ListRowOwnProps, ListRowProps, MarginProps, MenuAutocompleteListBoxOwnProps, MenuAutocompleteListBoxProps, MenuAutocompleteOwnProps, MenuAutocompleteProps, MenuItemOwnProps, MenuItemProps, MenuListBoxItemOwnProps, MenuListBoxItemProps, MenuListBoxOwnProps, MenuListBoxProps, MenuOwnProps, MenuPopoverOwnProps, MenuProps, MenuSectionOwnProps, MenuSectionProps, MenuSeparatorOwnProps, MenuSeparatorProps, MenuTriggerProps, NoPagination, NumberFieldOwnProps, NumberFieldProps, OffsetParams, OffsetResponse, Option, OptionSection, PaddingProps, PagePagination, PageSizeOption, PaginationOptions, PasswordFieldOwnProps, PasswordFieldProps, PluginHeaderOwnProps, PluginHeaderProps, PopoverOwnProps, PopoverProps, ProviderBg, QueryOptions, RadioGroupOwnProps, RadioGroupProps, RadioOwnProps, RadioProps, Responsive, RowConfig, RowOwnProps, RowProps, RowRenderFn, SearchAutocompleteItemOwnProps, SearchAutocompleteItemProps, SearchAutocompleteOwnProps, SearchAutocompleteProps, SearchFieldOwnProps, SearchFieldProps, SearchState, SelectOwnProps, SelectProps, SkeletonOwnProps, SkeletonProps, SliderOwnProps, SliderProps, SortDescriptor, SortState, Space, SpaceProps, SubmenuTriggerProps, SwitchOwnProps, SwitchProps, TabListOwnProps, TabListProps, TabMatchStrategy, TabOwnProps, TabPanelOwnProps, TabPanelProps, TabProps, TableBodyOwnProps, TableBodyProps, TableHeaderOwnProps, TableHeaderProps, TableItem, TablePaginationOwnProps, TablePaginationProps, TablePaginationType, TableProps, TableRootOwnProps, TableRootProps, TableSelection, TabsOwnProps, TabsProps, TagGroupOwnProps, TagGroupProps, TagOwnProps, TagProps, TextColorStatus, TextColors, TextFieldOwnProps, TextFieldProps, TextOwnProps, TextProps, TextVariants, TextWeights, ToggleButtonGroupOwnProps, ToggleButtonGroupProps, ToggleButtonOwnProps, ToggleButtonProps, TooltipOwnProps, TooltipProps, UseAnalyticsFn, UseTableCompleteOptions, UseTableCursorOptions, UseTableOffsetOptions, UseTableOptions, UseTableResult, UtilityProps, VirtualizedProp, VisuallyHiddenOwnProps, VisuallyHiddenProps };
package/dist/index.esm.js CHANGED
@@ -71,6 +71,8 @@ export { Text } from './components/Text/Text.esm.js';
71
71
  export { TextDefinition } from './components/Text/definition.esm.js';
72
72
  export { TextField } from './components/TextField/TextField.esm.js';
73
73
  export { TextFieldDefinition } from './components/TextField/definition.esm.js';
74
+ export { NumberField } from './components/NumberField/NumberField.esm.js';
75
+ export { NumberFieldDefinition } from './components/NumberField/definition.esm.js';
74
76
  export { PasswordField } from './components/PasswordField/PasswordField.esm.js';
75
77
  export { PasswordFieldDefinition } from './components/PasswordField/definition.esm.js';
76
78
  export { Tooltip, TooltipTrigger } from './components/Tooltip/Tooltip.esm.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/ui",
3
- "version": "0.15.0",
3
+ "version": "0.15.1-next.0",
4
4
  "backstage": {
5
5
  "role": "web-library"
6
6
  },
@@ -50,7 +50,7 @@
50
50
  "test": "backstage-cli package test"
51
51
  },
52
52
  "dependencies": {
53
- "@backstage/version-bridge": "^1.0.12",
53
+ "@backstage/version-bridge": "1.0.12",
54
54
  "@braintree/sanitize-url": "^7.1.2",
55
55
  "@internationalized/date": "^3.12.0",
56
56
  "@remixicon/react": ">=4.6.0 <4.9.0",
@@ -63,8 +63,8 @@
63
63
  "use-sync-external-store": "^1.4.0"
64
64
  },
65
65
  "devDependencies": {
66
- "@backstage/cli": "^0.36.2",
67
- "@backstage/core-components": "^0.18.10",
66
+ "@backstage/cli": "0.36.3-next.1",
67
+ "@backstage/core-components": "0.18.11-next.1",
68
68
  "@storybook/react-vite": "^10.4.0",
69
69
  "@testing-library/jest-dom": "^6.0.0",
70
70
  "@testing-library/react": "^16.0.0",