@dbcdk/react-components 0.0.189 → 0.0.191

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 (128) hide show
  1. package/dist/client.cjs +7 -0
  2. package/dist/client.d.ts +1 -0
  3. package/dist/client.js +1 -0
  4. package/dist/components/accordion/Accordion.cjs +4 -8
  5. package/dist/components/accordion/Accordion.d.ts +1 -1
  6. package/dist/components/accordion/Accordion.js +4 -8
  7. package/dist/components/accordion/Accordion.module.css +55 -6
  8. package/dist/components/accordion/components/AccordionRow.cjs +2 -2
  9. package/dist/components/accordion/components/AccordionRow.d.ts +2 -2
  10. package/dist/components/accordion/components/AccordionRow.js +2 -2
  11. package/dist/components/accordion/components/AccordionRow.module.css +24 -2
  12. package/dist/components/breadcrumbs/Breadcrumbs.cjs +10 -7
  13. package/dist/components/breadcrumbs/Breadcrumbs.js +10 -7
  14. package/dist/components/breadcrumbs/Breadcrumbs.module.css +1 -5
  15. package/dist/components/button/Button.module.css +4 -2
  16. package/dist/components/button-select/ButtonSelect.cjs +2 -2
  17. package/dist/components/button-select/ButtonSelect.d.ts +1 -0
  18. package/dist/components/button-select/ButtonSelect.js +2 -2
  19. package/dist/components/button-select/ButtonSelect.module.css +14 -0
  20. package/dist/components/chip/Chip.module.css +38 -2
  21. package/dist/components/forms/checkbox/Checkbox.cjs +6 -1
  22. package/dist/components/forms/checkbox/Checkbox.js +6 -1
  23. package/dist/components/forms/checkbox/Checkbox.module.css +26 -0
  24. package/dist/components/forms/input/Input.module.css +2 -1
  25. package/dist/components/forms/input-container/InputContainer.d.ts +3 -3
  26. package/dist/components/forms/input-container/InputContainer.module.css +0 -7
  27. package/dist/components/grid/Grid.cjs +4 -2
  28. package/dist/components/grid/Grid.d.ts +2 -2
  29. package/dist/components/grid/Grid.js +4 -2
  30. package/dist/components/nav-bar/NavBar.d.ts +1 -0
  31. package/dist/components/overlay/side-panel/SidePanel.module.css +3 -1
  32. package/dist/components/page-layout/PageLayout.module.css +18 -2
  33. package/dist/components/sidebar/components/SidebarItem.cjs +2 -0
  34. package/dist/components/sidebar/components/SidebarItem.d.ts +2 -1
  35. package/dist/components/sidebar/components/SidebarItem.js +2 -0
  36. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.cjs +4 -0
  37. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.d.ts +2 -1
  38. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.js +4 -0
  39. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.cjs +6 -1
  40. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.d.ts +2 -1
  41. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.js +6 -1
  42. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.module.css +14 -0
  43. package/dist/components/sidebar/components/sidebar-items/SidebarItems.cjs +13 -2
  44. package/dist/components/sidebar/components/sidebar-items/SidebarItems.js +13 -2
  45. package/dist/components/table/Table.module.css +2 -4
  46. package/dist/components/table/Table.types.d.ts +1 -0
  47. package/dist/components/table/components/TableHeaderCell.cjs +1 -1
  48. package/dist/components/table/components/TableHeaderCell.js +1 -1
  49. package/dist/components/table/components/TableRow.cjs +1 -0
  50. package/dist/components/table/components/TableRow.js +1 -0
  51. package/dist/components/table/tanstackTable.utils.cjs +3 -2
  52. package/dist/components/table/tanstackTable.utils.js +3 -2
  53. package/dist/components/tabs/Tabs.module.css +13 -4
  54. package/dist/hooks/useStickyLayout.cjs +99 -0
  55. package/dist/hooks/useStickyLayout.d.ts +22 -0
  56. package/dist/hooks/useStickyLayout.js +97 -0
  57. package/dist/index.cjs +7 -0
  58. package/dist/index.d.ts +1 -0
  59. package/dist/index.js +1 -0
  60. package/dist/styles/css-helper-classes/scrollbar.css +10 -0
  61. package/dist/styles/styles.css +40 -24
  62. package/dist/styles/themes/dbc/base.css +2 -2
  63. package/dist/styles.css +40 -24
  64. package/package.json +1 -1
  65. package/dist/styles/fonts/Roboto/OFL.txt +0 -93
  66. package/dist/styles/fonts/Roboto/README.txt +0 -118
  67. package/dist/styles/fonts/Roboto/Roboto-Black.ttf +0 -0
  68. package/dist/styles/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
  69. package/dist/styles/fonts/Roboto/Roboto-Bold.ttf +0 -0
  70. package/dist/styles/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
  71. package/dist/styles/fonts/Roboto/Roboto-ExtraBold.ttf +0 -0
  72. package/dist/styles/fonts/Roboto/Roboto-ExtraBoldItalic.ttf +0 -0
  73. package/dist/styles/fonts/Roboto/Roboto-ExtraLight.ttf +0 -0
  74. package/dist/styles/fonts/Roboto/Roboto-ExtraLightItalic.ttf +0 -0
  75. package/dist/styles/fonts/Roboto/Roboto-Italic.ttf +0 -0
  76. package/dist/styles/fonts/Roboto/Roboto-Light.ttf +0 -0
  77. package/dist/styles/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
  78. package/dist/styles/fonts/Roboto/Roboto-Medium.ttf +0 -0
  79. package/dist/styles/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
  80. package/dist/styles/fonts/Roboto/Roboto-Regular.ttf +0 -0
  81. package/dist/styles/fonts/Roboto/Roboto-SemiBold.ttf +0 -0
  82. package/dist/styles/fonts/Roboto/Roboto-SemiBoldItalic.ttf +0 -0
  83. package/dist/styles/fonts/Roboto/Roboto-Thin.ttf +0 -0
  84. package/dist/styles/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
  85. package/dist/styles/fonts/Roboto/Roboto_Condensed-Black.ttf +0 -0
  86. package/dist/styles/fonts/Roboto/Roboto_Condensed-BlackItalic.ttf +0 -0
  87. package/dist/styles/fonts/Roboto/Roboto_Condensed-Bold.ttf +0 -0
  88. package/dist/styles/fonts/Roboto/Roboto_Condensed-BoldItalic.ttf +0 -0
  89. package/dist/styles/fonts/Roboto/Roboto_Condensed-ExtraBold.ttf +0 -0
  90. package/dist/styles/fonts/Roboto/Roboto_Condensed-ExtraBoldItalic.ttf +0 -0
  91. package/dist/styles/fonts/Roboto/Roboto_Condensed-ExtraLight.ttf +0 -0
  92. package/dist/styles/fonts/Roboto/Roboto_Condensed-ExtraLightItalic.ttf +0 -0
  93. package/dist/styles/fonts/Roboto/Roboto_Condensed-Italic.ttf +0 -0
  94. package/dist/styles/fonts/Roboto/Roboto_Condensed-Light.ttf +0 -0
  95. package/dist/styles/fonts/Roboto/Roboto_Condensed-LightItalic.ttf +0 -0
  96. package/dist/styles/fonts/Roboto/Roboto_Condensed-Medium.ttf +0 -0
  97. package/dist/styles/fonts/Roboto/Roboto_Condensed-MediumItalic.ttf +0 -0
  98. package/dist/styles/fonts/Roboto/Roboto_Condensed-Regular.ttf +0 -0
  99. package/dist/styles/fonts/Roboto/Roboto_Condensed-SemiBold.ttf +0 -0
  100. package/dist/styles/fonts/Roboto/Roboto_Condensed-SemiBoldItalic.ttf +0 -0
  101. package/dist/styles/fonts/Roboto/Roboto_Condensed-Thin.ttf +0 -0
  102. package/dist/styles/fonts/Roboto/Roboto_Condensed-ThinItalic.ttf +0 -0
  103. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Black.ttf +0 -0
  104. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-BlackItalic.ttf +0 -0
  105. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Bold.ttf +0 -0
  106. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-BoldItalic.ttf +0 -0
  107. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ExtraBold.ttf +0 -0
  108. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  109. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ExtraLight.ttf +0 -0
  110. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ExtraLightItalic.ttf +0 -0
  111. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Italic.ttf +0 -0
  112. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Light.ttf +0 -0
  113. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-LightItalic.ttf +0 -0
  114. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Medium.ttf +0 -0
  115. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-MediumItalic.ttf +0 -0
  116. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Regular.ttf +0 -0
  117. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-SemiBold.ttf +0 -0
  118. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-SemiBoldItalic.ttf +0 -0
  119. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Thin.ttf +0 -0
  120. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ThinItalic.ttf +0 -0
  121. package/dist/styles/fonts/Tajawal/OFL.txt +0 -93
  122. package/dist/styles/fonts/Tajawal/Tajawal-Black.ttf +0 -0
  123. package/dist/styles/fonts/Tajawal/Tajawal-Bold.ttf +0 -0
  124. package/dist/styles/fonts/Tajawal/Tajawal-ExtraBold.ttf +0 -0
  125. package/dist/styles/fonts/Tajawal/Tajawal-ExtraLight.ttf +0 -0
  126. package/dist/styles/fonts/Tajawal/Tajawal-Light.ttf +0 -0
  127. package/dist/styles/fonts/Tajawal/Tajawal-Medium.ttf +0 -0
  128. package/dist/styles/fonts/Tajawal/Tajawal-Regular.ttf +0 -0
package/dist/client.cjs CHANGED
@@ -48,6 +48,7 @@ var TreeView = require('./components/tree-view/TreeView');
48
48
  var nestedFiltering = require('./utils/arrays/nested-filtering');
49
49
  var MultiSelect = require('./components/forms/multi-select/MultiSelect');
50
50
  var useViewportFill = require('./hooks/useViewportFill');
51
+ var useStickyLayout = require('./hooks/useStickyLayout');
51
52
  var formatDate = require('./utils/date/formatDate');
52
53
  var FilterField = require('./components/filter-field/FilterField');
53
54
  var Select = require('./components/forms/select/Select');
@@ -386,6 +387,12 @@ Object.keys(useViewportFill).forEach(function (k) {
386
387
  get: function () { return useViewportFill[k]; }
387
388
  });
388
389
  });
390
+ Object.keys(useStickyLayout).forEach(function (k) {
391
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
392
+ enumerable: true,
393
+ get: function () { return useStickyLayout[k]; }
394
+ });
395
+ });
389
396
  Object.keys(formatDate).forEach(function (k) {
390
397
  if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
391
398
  enumerable: true,
package/dist/client.d.ts CHANGED
@@ -45,6 +45,7 @@ export * from './components/tree-view/TreeView';
45
45
  export * from './utils/arrays/nested-filtering';
46
46
  export * from './components/forms/multi-select/MultiSelect';
47
47
  export * from './hooks/useViewportFill';
48
+ export * from './hooks/useStickyLayout';
48
49
  export * from './utils/date/formatDate';
49
50
  export * from './components/filter-field/FilterField';
50
51
  export * from './components/forms/select/Select';
package/dist/client.js CHANGED
@@ -46,6 +46,7 @@ export * from './components/tree-view/TreeView';
46
46
  export * from './utils/arrays/nested-filtering';
47
47
  export * from './components/forms/multi-select/MultiSelect';
48
48
  export * from './hooks/useViewportFill';
49
+ export * from './hooks/useStickyLayout';
49
50
  export * from './utils/date/formatDate';
50
51
  export * from './components/filter-field/FilterField';
51
52
  export * from './components/forms/select/Select';
@@ -23,7 +23,7 @@ function Accordion({
23
23
  items,
24
24
  mode = "single",
25
25
  size = "md",
26
- variant = "default",
26
+ variant = "filled",
27
27
  renderMode = "lazy",
28
28
  defaultOpenIndex = null,
29
29
  defaultOpenIndexes = [],
@@ -35,6 +35,7 @@ function Accordion({
35
35
  ...rest
36
36
  }) {
37
37
  const uid = react.useId();
38
+ const resolvedVariant = variant === "default" ? "filled" : variant;
38
39
  const isControlled = mode === "single" ? openIndex !== void 0 : openIndexes !== void 0;
39
40
  const [hasMounted, setHasMounted] = react.useState(false);
40
41
  react.useEffect(() => {
@@ -96,12 +97,7 @@ function Accordion({
96
97
  "div",
97
98
  {
98
99
  ...rest,
99
- className: [
100
- styles__default.default.container,
101
- styles__default.default[size],
102
- variant !== "default" ? styles__default.default[variant] : "",
103
- className
104
- ].filter(Boolean).join(" "),
100
+ className: [styles__default.default.container, styles__default.default[size], styles__default.default[resolvedVariant], className].filter(Boolean).join(" "),
105
101
  children: items.map((item, i) => {
106
102
  var _a;
107
103
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -114,7 +110,7 @@ function Accordion({
114
110
  onToggle: toggle,
115
111
  shouldAnimate: hasMounted,
116
112
  headlineSize: size === "sm" ? 4 : 3,
117
- variant,
113
+ variant: resolvedVariant,
118
114
  renderMode
119
115
  },
120
116
  (_a = item.id) != null ? _a : i
@@ -13,7 +13,7 @@ export interface AccordionItem {
13
13
  }
14
14
  type Size = 'sm' | 'md' | 'lg';
15
15
  type Mode = 'single' | 'multiple';
16
- type Variant = 'default' | 'outlined';
16
+ type Variant = 'filled' | 'outlined' | 'default';
17
17
  type OpenIndexes = number[] | 'all';
18
18
  type RenderMode = 'lazy' | 'eager';
19
19
  export interface AccordionProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
@@ -17,7 +17,7 @@ function Accordion({
17
17
  items,
18
18
  mode = "single",
19
19
  size = "md",
20
- variant = "default",
20
+ variant = "filled",
21
21
  renderMode = "lazy",
22
22
  defaultOpenIndex = null,
23
23
  defaultOpenIndexes = [],
@@ -29,6 +29,7 @@ function Accordion({
29
29
  ...rest
30
30
  }) {
31
31
  const uid = useId();
32
+ const resolvedVariant = variant === "default" ? "filled" : variant;
32
33
  const isControlled = mode === "single" ? openIndex !== void 0 : openIndexes !== void 0;
33
34
  const [hasMounted, setHasMounted] = useState(false);
34
35
  useEffect(() => {
@@ -90,12 +91,7 @@ function Accordion({
90
91
  "div",
91
92
  {
92
93
  ...rest,
93
- className: [
94
- styles.container,
95
- styles[size],
96
- variant !== "default" ? styles[variant] : "",
97
- className
98
- ].filter(Boolean).join(" "),
94
+ className: [styles.container, styles[size], styles[resolvedVariant], className].filter(Boolean).join(" "),
99
95
  children: items.map((item, i) => {
100
96
  var _a;
101
97
  return /* @__PURE__ */ jsx(
@@ -108,7 +104,7 @@ function Accordion({
108
104
  onToggle: toggle,
109
105
  shouldAnimate: hasMounted,
110
106
  headlineSize: size === "sm" ? 4 : 3,
111
- variant,
107
+ variant: resolvedVariant,
112
108
  renderMode
113
109
  },
114
110
  (_a = item.id) != null ? _a : i
@@ -1,41 +1,90 @@
1
1
  .container {
2
2
  border-radius: var(--border-radius-default);
3
- background-color: var(--color-bg-surface);
3
+ background-color: transparent;
4
4
  box-sizing: border-box;
5
5
  display: flex;
6
6
  flex-direction: column;
7
7
  overflow: hidden;
8
- gap: var(--spacing-xs);
8
+ gap: 0;
9
+ }
10
+
11
+ .filled {
12
+ --acc-item-bg: transparent;
13
+ --acc-trigger-bg: color-mix(
14
+ in srgb,
15
+ var(--color-bg-contextual-subtle) 66%,
16
+ var(--color-bg-surface)
17
+ );
18
+ --acc-trigger-bg-hover: color-mix(
19
+ in srgb,
20
+ var(--color-bg-contextual-subtle) 74%,
21
+ var(--color-bg-surface)
22
+ );
23
+ --acc-content-bg: var(--color-bg-surface);
24
+ --acc-item-separator: none;
25
+ --acc-item-gap: calc((var(--spacing-xxs) + var(--spacing-xs)) / 2);
26
+ --acc-item-radius: var(--border-radius-sm);
27
+ --acc-content-px: var(--acc-trigger-px);
28
+ --acc-content-open-pt: var(--spacing-2xs);
9
29
  }
10
30
 
11
31
  .outlined {
12
- background-color: transparent;
32
+ background-color: var(--color-bg-surface);
13
33
  border: 1px solid var(--color-border-subtle);
14
34
  border-radius: var(--border-radius-md);
15
35
  gap: 0;
36
+ --acc-item-bg: transparent;
37
+ --acc-content-bg: transparent;
38
+ --acc-item-gap: 0;
39
+ --acc-item-radius: 0;
16
40
  --acc-trigger-bg: transparent;
41
+ --acc-trigger-bg-hover: transparent;
17
42
  --acc-content-px: var(--acc-trigger-px);
18
43
  --acc-item-separator: 1px solid var(--color-border-subtle);
19
44
  }
20
45
 
21
46
  /* Size variables (consumed by AccordionRow) */
22
47
  .sm {
23
- --acc-trigger-py: var(--spacing-xs);
48
+ --acc-trigger-py: var(--spacing-xxs);
24
49
  --acc-trigger-px: var(--spacing-sm);
25
50
  --acc-content-py: var(--spacing-sm);
26
51
  --acc-font-size: var(--font-size-sm);
27
52
  }
28
53
 
29
54
  .md {
30
- --acc-trigger-py: var(--spacing-sm);
55
+ --acc-trigger-py: var(--spacing-xs);
31
56
  --acc-trigger-px: var(--spacing-md);
32
57
  --acc-content-py: var(--spacing-md);
33
58
  --acc-font-size: var(--font-size-md);
34
59
  }
35
60
 
36
61
  .lg {
37
- --acc-trigger-py: var(--spacing-md);
62
+ --acc-trigger-py: var(--spacing-sm);
38
63
  --acc-trigger-px: var(--spacing-md);
39
64
  --acc-content-py: var(--spacing-md);
40
65
  --acc-font-size: var(--font-size-md);
41
66
  }
67
+
68
+ .filled.sm {
69
+ --acc-trigger-py: var(--spacing-2xs);
70
+ }
71
+
72
+ .filled.md {
73
+ --acc-trigger-py: calc((var(--spacing-xs) + var(--spacing-xxs)) / 2);
74
+ }
75
+
76
+ .filled.lg {
77
+ --acc-trigger-py: calc((var(--spacing-sm) + var(--spacing-xs)) / 2);
78
+ }
79
+
80
+ .outlined.sm {
81
+ --acc-trigger-py: var(--spacing-xs);
82
+ }
83
+
84
+ .outlined.md {
85
+ --acc-trigger-py: var(--spacing-sm);
86
+ }
87
+
88
+ .outlined.lg {
89
+ --acc-trigger-py: var(--spacing-md);
90
+ }
@@ -19,11 +19,11 @@ function AccordionRow({
19
19
  onToggle,
20
20
  shouldAnimate = true,
21
21
  headlineSize = 4,
22
- variant = "default",
22
+ variant: _variant = "filled",
23
23
  renderMode = "lazy"
24
24
  }) {
25
25
  const isDisabled = !!item.disabled;
26
- const headlineWeight = variant === "outlined" ? 400 : 500;
26
+ const headlineWeight = 400;
27
27
  const buttonId = `${uid}-acc-btn-${index}`;
28
28
  const panelId = `${uid}-acc-panel-${index}`;
29
29
  const { innerRef, height, onTransitionEnd } = useCollapsibleHeight.useCollapsibleHeight(isOpen, shouldAnimate);
@@ -8,7 +8,7 @@ export type AccordionRowProps = {
8
8
  onToggle: (index: number) => void;
9
9
  shouldAnimate?: boolean;
10
10
  headlineSize?: 1 | 2 | 3 | 4 | 5 | 6;
11
- variant?: 'default' | 'outlined';
11
+ variant?: 'filled' | 'outlined' | 'default';
12
12
  renderMode?: 'lazy' | 'eager';
13
13
  };
14
- export declare function AccordionRow({ uid, index, item, isOpen, onToggle, shouldAnimate, headlineSize, variant, renderMode, }: AccordionRowProps): JSX.Element;
14
+ export declare function AccordionRow({ uid, index, item, isOpen, onToggle, shouldAnimate, headlineSize, variant: _variant, renderMode, }: AccordionRowProps): JSX.Element;
@@ -13,11 +13,11 @@ function AccordionRow({
13
13
  onToggle,
14
14
  shouldAnimate = true,
15
15
  headlineSize = 4,
16
- variant = "default",
16
+ variant: _variant = "filled",
17
17
  renderMode = "lazy"
18
18
  }) {
19
19
  const isDisabled = !!item.disabled;
20
- const headlineWeight = variant === "outlined" ? 400 : 500;
20
+ const headlineWeight = 400;
21
21
  const buttonId = `${uid}-acc-btn-${index}`;
22
22
  const panelId = `${uid}-acc-panel-${index}`;
23
23
  const { innerRef, height, onTransitionEnd } = useCollapsibleHeight(isOpen, shouldAnimate);
@@ -5,6 +5,15 @@
5
5
  background: var(--acc-trigger-bg, var(--color-bg-contextual-subtle));
6
6
  }
7
7
 
8
+ .item:not(.disabled):hover .headerRow {
9
+ background: var(--acc-trigger-bg-hover, var(--acc-trigger-bg, var(--color-bg-contextual-subtle)));
10
+ }
11
+
12
+ .item:not(.disabled):hover .title,
13
+ .item:not(.disabled):hover .chevron {
14
+ color: var(--color-fg-default);
15
+ }
16
+
8
17
  .trigger {
9
18
  all: unset;
10
19
  box-sizing: border-box;
@@ -75,9 +84,10 @@
75
84
  }
76
85
 
77
86
  .chevron {
78
- width: var(--icon-size-md);
79
- height: var(--icon-size-md);
87
+ width: var(--icon-size-sm);
88
+ height: var(--icon-size-sm);
80
89
  flex: 0 0 auto;
90
+ color: var(--color-fg-muted);
81
91
  transition: transform var(--transition-normal) var(--ease-standard);
82
92
  }
83
93
 
@@ -108,12 +118,24 @@
108
118
 
109
119
  .content {
110
120
  padding: var(--acc-content-py) var(--acc-content-px, 0);
121
+ background: var(--acc-content-bg, transparent);
122
+ }
123
+
124
+ .item[data-state='open'] .content {
125
+ padding-top: var(--acc-content-open-pt, var(--acc-content-py));
111
126
  }
112
127
 
113
128
  .item {
129
+ background: var(--acc-item-bg, transparent);
130
+ border-radius: var(--acc-item-radius, 0);
131
+ overflow: hidden;
114
132
  border-bottom: var(--acc-item-separator, none);
115
133
  }
116
134
 
135
+ .item + .item {
136
+ margin-top: var(--acc-item-gap, 0);
137
+ }
138
+
117
139
  :global(.outlined) .item[data-state='open'] .headerRow {
118
140
  box-shadow: inset 3px 0 0 var(--color-border-selected);
119
141
  }
@@ -12,13 +12,16 @@ function Breadcrumbs({
12
12
  items,
13
13
  ...navProps
14
14
  }) {
15
- return /* @__PURE__ */ jsxRuntime.jsx("nav", { className: styles__default.default.breadcrumbs, "aria-label": "breadcrumb", ...navProps, children: /* @__PURE__ */ jsxRuntime.jsx("ul", { children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
16
- /* @__PURE__ */ jsxRuntime.jsxs("li", { children: [
17
- item.icon && item.icon,
18
- item.onClick ? /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: item.onClick, children: item.label }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label })
19
- ] }),
20
- index < items.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.separator, children: "/" })
21
- ] }, `breadcrumbItem-${item.label}-${index}`)) }) });
15
+ return /* @__PURE__ */ jsxRuntime.jsx("nav", { className: styles__default.default.breadcrumbs, "aria-label": "breadcrumb", ...navProps, children: /* @__PURE__ */ jsxRuntime.jsx("ul", { children: items.map((item, index) => {
16
+ const isCurrent = index === items.length - 1;
17
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
18
+ /* @__PURE__ */ jsxRuntime.jsxs("li", { "aria-current": isCurrent ? "page" : void 0, children: [
19
+ item.icon && item.icon,
20
+ item.onClick ? /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: item.onClick, children: item.label }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label })
21
+ ] }),
22
+ index < items.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.separator, children: "/" })
23
+ ] }, `breadcrumbItem-${item.label}-${index}`);
24
+ }) }) });
22
25
  }
23
26
 
24
27
  exports.Breadcrumbs = Breadcrumbs;
@@ -6,13 +6,16 @@ function Breadcrumbs({
6
6
  items,
7
7
  ...navProps
8
8
  }) {
9
- return /* @__PURE__ */ jsx("nav", { className: styles.breadcrumbs, "aria-label": "breadcrumb", ...navProps, children: /* @__PURE__ */ jsx("ul", { children: items.map((item, index) => /* @__PURE__ */ jsxs(Fragment, { children: [
10
- /* @__PURE__ */ jsxs("li", { children: [
11
- item.icon && item.icon,
12
- item.onClick ? /* @__PURE__ */ jsx("button", { onClick: item.onClick, children: item.label }) : /* @__PURE__ */ jsx("span", { children: item.label })
13
- ] }),
14
- index < items.length - 1 && /* @__PURE__ */ jsx("span", { className: styles.separator, children: "/" })
15
- ] }, `breadcrumbItem-${item.label}-${index}`)) }) });
9
+ return /* @__PURE__ */ jsx("nav", { className: styles.breadcrumbs, "aria-label": "breadcrumb", ...navProps, children: /* @__PURE__ */ jsx("ul", { children: items.map((item, index) => {
10
+ const isCurrent = index === items.length - 1;
11
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
12
+ /* @__PURE__ */ jsxs("li", { "aria-current": isCurrent ? "page" : void 0, children: [
13
+ item.icon && item.icon,
14
+ item.onClick ? /* @__PURE__ */ jsx("button", { onClick: item.onClick, children: item.label }) : /* @__PURE__ */ jsx("span", { children: item.label })
15
+ ] }),
16
+ index < items.length - 1 && /* @__PURE__ */ jsx("span", { className: styles.separator, children: "/" })
17
+ ] }, `breadcrumbItem-${item.label}-${index}`);
18
+ }) }) });
16
19
  }
17
20
 
18
21
  export { Breadcrumbs };
@@ -34,12 +34,8 @@
34
34
  .breadcrumbs li[aria-current='page'],
35
35
  .breadcrumbs li:last-of-type {
36
36
  color: var(--color-fg-default);
37
- cursor: default;
38
- }
39
-
40
- .breadcrumbs li[aria-current='page'] button,
41
- .breadcrumbs li:last-of-type button {
42
37
  font-weight: var(--font-weight-medium);
38
+ cursor: default;
43
39
  }
44
40
 
45
41
  .separator {
@@ -259,7 +259,8 @@
259
259
  }
260
260
 
261
261
  .header:hover {
262
- background-color: color-mix(in srgb, var(--color-navbar-fg) 12%, transparent);
262
+ background-color: transparent;
263
+ border-color: var(--color-navbar-fg);
263
264
  }
264
265
 
265
266
  .header:focus-visible {
@@ -275,7 +276,8 @@
275
276
  }
276
277
 
277
278
  .header.active:hover {
278
- background-color: color-mix(in srgb, var(--color-navbar-fg) 22%, transparent);
279
+ background-color: color-mix(in srgb, var(--color-navbar-fg) 16%, transparent);
280
+ border-color: var(--color-navbar-fg);
279
281
  }
280
282
 
281
283
  .button.xs {
@@ -10,7 +10,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
10
  var styles__default = /*#__PURE__*/_interopDefault(styles);
11
11
 
12
12
  function ButtonSelect(props) {
13
- const { options, size = "md", disabled } = props;
13
+ const { options, size = "md", disabled, modified = false } = props;
14
14
  const selectedValues = Array.isArray(props.value) ? props.value : [props.value];
15
15
  function handleSelect(optionValue) {
16
16
  if (props.multiple) {
@@ -20,7 +20,7 @@ function ButtonSelect(props) {
20
20
  }
21
21
  props.onChange(optionValue);
22
22
  }
23
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles__default.default.group, role: "group", children: options.map((option) => {
23
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles__default.default.group, role: "group", "data-modified": modified ? "true" : void 0, children: options.map((option) => {
24
24
  const isSelected = selectedValues.includes(option.value);
25
25
  return /* @__PURE__ */ jsxRuntime.jsx(
26
26
  Button.Button,
@@ -10,6 +10,7 @@ interface ButtonSelectBaseProps<T extends string = string> {
10
10
  options: ButtonSelectOption<T>[];
11
11
  size?: ButtonSize;
12
12
  disabled?: boolean;
13
+ modified?: boolean;
13
14
  }
14
15
  export interface ButtonSelectSingleProps<T extends string = string> extends ButtonSelectBaseProps<T> {
15
16
  value: T;
@@ -4,7 +4,7 @@ import { Button } from '../../components/button/Button';
4
4
  import styles from './ButtonSelect.module.css';
5
5
 
6
6
  function ButtonSelect(props) {
7
- const { options, size = "md", disabled } = props;
7
+ const { options, size = "md", disabled, modified = false } = props;
8
8
  const selectedValues = Array.isArray(props.value) ? props.value : [props.value];
9
9
  function handleSelect(optionValue) {
10
10
  if (props.multiple) {
@@ -14,7 +14,7 @@ function ButtonSelect(props) {
14
14
  }
15
15
  props.onChange(optionValue);
16
16
  }
17
- return /* @__PURE__ */ jsx("div", { className: styles.group, role: "group", children: options.map((option) => {
17
+ return /* @__PURE__ */ jsx("div", { className: styles.group, role: "group", "data-modified": modified ? "true" : void 0, children: options.map((option) => {
18
18
  const isSelected = selectedValues.includes(option.value);
19
19
  return /* @__PURE__ */ jsx(
20
20
  Button,
@@ -3,6 +3,20 @@
3
3
  flex-wrap: nowrap;
4
4
  }
5
5
 
6
+ .group[data-modified='true'] {
7
+ background-color: color-mix(in srgb, var(--color-status-warning-bg) 35%, transparent);
8
+ border-radius: var(--border-radius-default);
9
+ padding: 0;
10
+ }
11
+
12
+ .group[data-modified='true'] .btn {
13
+ border-color: color-mix(
14
+ in srgb,
15
+ var(--color-status-warning-border) 60%,
16
+ var(--color-border-default)
17
+ );
18
+ }
19
+
6
20
  /* Collapse the doubled border between adjacent buttons */
7
21
  .group .btn:not(:first-child) {
8
22
  margin-left: -1px;
@@ -24,6 +24,10 @@
24
24
  transform var(--transition-fast) var(--ease-standard);
25
25
  }
26
26
 
27
+ .hasClose {
28
+ gap: var(--spacing-2xs);
29
+ }
30
+
27
31
  .container:focus-visible {
28
32
  outline: none;
29
33
  }
@@ -39,14 +43,14 @@
39
43
  /* Types */
40
44
 
41
45
  .outlined {
42
- --chip-bg: var(--color-bg-surface);
46
+ --chip-bg: transparent;
43
47
  --chip-border: var(--chip-outlined-border, var(--color-border-subtle));
44
48
  --chip-fg: var(--chip-outlined-fg, var(--color-fg-muted));
45
49
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
46
50
  }
47
51
 
48
52
  .outlined:hover {
49
- background-color: var(--color-bg-surface);
53
+ background-color: transparent;
50
54
  border-color: var(--chip-outlined-border-hover, var(--color-border-default));
51
55
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
52
56
  color: var(--chip-outlined-fg-hover, var(--color-fg-default));
@@ -120,6 +124,25 @@
120
124
  box-shadow: none;
121
125
  }
122
126
 
127
+ .outlined.neutral {
128
+ --chip-bg: transparent;
129
+ --chip-border: var(--chip-outlined-border, var(--color-border-subtle));
130
+ }
131
+
132
+ .outlined.neutral:hover,
133
+ .outlined.neutral:focus-visible {
134
+ --chip-bg: transparent;
135
+ }
136
+
137
+ .neutral .close {
138
+ color: var(--color-fg-subtle);
139
+ }
140
+
141
+ .neutral .close:hover,
142
+ .neutral .close:focus-visible {
143
+ color: var(--color-fg-default);
144
+ }
145
+
123
146
  .success {
124
147
  --chip-bg: var(--color-status-success-bg);
125
148
  --chip-fg: var(--color-status-success-fg);
@@ -195,6 +218,19 @@
195
218
  box-shadow: inset 0 0 0 1px var(--color-border-selected);
196
219
  }
197
220
 
221
+ .outlined.selected,
222
+ .outlined.selected:hover,
223
+ .outlined.selected:focus-visible {
224
+ background: color-mix(in srgb, var(--color-bg-selected) 65%, var(--color-bg-surface));
225
+ border-color: var(--color-border-selected);
226
+ box-shadow: inset 0 0 0 1px var(--color-border-selected);
227
+ color: var(--color-brand);
228
+ }
229
+
230
+ .outlined.selected:hover {
231
+ background: color-mix(in srgb, var(--color-bg-selected-hover) 65%, var(--color-bg-surface));
232
+ }
233
+
198
234
  .selected:hover {
199
235
  background-color: var(--color-bg-selected);
200
236
  border-color: var(--color-border-selected);
@@ -49,7 +49,11 @@ function Checkbox({
49
49
  const content = /* @__PURE__ */ jsxRuntime.jsxs(
50
50
  "span",
51
51
  {
52
- className: [styles__default.default.container, size === "sm" ? styles__default.default.containerSm : ""].filter(Boolean).join(" "),
52
+ className: [
53
+ styles__default.default.container,
54
+ size === "sm" ? styles__default.default.containerSm : "",
55
+ modified ? styles__default.default.modified : ""
56
+ ].filter(Boolean).join(" "),
53
57
  "data-cy": dataCy,
54
58
  children: [
55
59
  /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: tooltip, placement: tooltipPlacement, children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -65,6 +69,7 @@ function Checkbox({
65
69
  onClick: toggle,
66
70
  className: [
67
71
  styles__default.default.checkbox,
72
+ disabled ? "disabled" : "",
68
73
  isChecked ? styles__default.default.checked : "",
69
74
  styles__default.default[variant],
70
75
  styles__default.default[size]
@@ -43,7 +43,11 @@ function Checkbox({
43
43
  const content = /* @__PURE__ */ jsxs(
44
44
  "span",
45
45
  {
46
- className: [styles.container, size === "sm" ? styles.containerSm : ""].filter(Boolean).join(" "),
46
+ className: [
47
+ styles.container,
48
+ size === "sm" ? styles.containerSm : "",
49
+ modified ? styles.modified : ""
50
+ ].filter(Boolean).join(" "),
47
51
  "data-cy": dataCy,
48
52
  children: [
49
53
  /* @__PURE__ */ jsx(Tooltip, { content: tooltip, placement: tooltipPlacement, children: /* @__PURE__ */ jsx(
@@ -59,6 +63,7 @@ function Checkbox({
59
63
  onClick: toggle,
60
64
  className: [
61
65
  styles.checkbox,
66
+ disabled ? "disabled" : "",
62
67
  isChecked ? styles.checked : "",
63
68
  styles[variant],
64
69
  styles[size]
@@ -7,6 +7,13 @@
7
7
  color: var(--color-fg-default);
8
8
  }
9
9
 
10
+ .container.modified {
11
+ background-color: color-mix(in srgb, var(--color-status-warning-bg) 75%, transparent);
12
+ border-radius: var(--border-radius-default);
13
+ padding: 0;
14
+ display: inline-flex;
15
+ }
16
+
10
17
  .containerSm {
11
18
  gap: var(--spacing-xs);
12
19
  }
@@ -28,6 +35,12 @@
28
35
  box-shadow var(--transition-fast) var(--ease-standard);
29
36
  }
30
37
 
38
+ .checkbox:disabled {
39
+ cursor: not-allowed;
40
+ opacity: 0.5;
41
+ filter: grayscale(0.2);
42
+ }
43
+
31
44
  .checkbox.sm {
32
45
  width: var(--component-size-xs);
33
46
  height: var(--component-size-xs);
@@ -54,11 +67,24 @@
54
67
  border-color: var(--color-fg-default);
55
68
  }
56
69
 
70
+ .checkbox:disabled:hover {
71
+ border-color: var(--color-border-default);
72
+ }
73
+
57
74
  .checked {
58
75
  background-color: var(--color-brand);
59
76
  border-color: var(--color-brand);
60
77
  }
61
78
 
79
+ .checkbox:disabled.checked {
80
+ background-color: var(--color-bg-subtle);
81
+ border-color: var(--color-border-muted);
82
+ }
83
+
84
+ .checkbox:disabled.checked .icon {
85
+ color: var(--color-fg-muted);
86
+ }
87
+
62
88
  .icon {
63
89
  width: var(--icon-size-md);
64
90
  height: var(--icon-size-md);
@@ -191,7 +191,8 @@
191
191
  }
192
192
 
193
193
  .header:hover:not([aria-disabled='true']) {
194
- background-color: color-mix(in srgb, var(--color-navbar-fg) 8%, transparent);
194
+ background-color: transparent;
195
+ border-color: var(--color-navbar-fg);
195
196
  }
196
197
 
197
198
  .header:focus-within:not([aria-disabled='true']) {