@ostack.tech/ui 0.10.5 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/chunks/{en-DwZKZVGL.js → en-DtnihkTA.js} +20 -3
  2. package/dist/chunks/en-DtnihkTA.js.map +1 -0
  3. package/dist/locales/en-GB.js +1 -1
  4. package/dist/locales/en-US.js +1 -1
  5. package/dist/locales/fr-FR.js +19 -2
  6. package/dist/locales/fr-FR.js.map +1 -1
  7. package/dist/locales/pt-PT.js +19 -2
  8. package/dist/locales/pt-PT.js.map +1 -1
  9. package/dist/ostack-ui.css +192 -113
  10. package/dist/ostack-ui.js +1467 -682
  11. package/dist/ostack-ui.js.map +1 -1
  12. package/dist/types/components/Alert/Alert.d.ts +3 -3
  13. package/dist/types/components/AlertDialog/AlertDialog.d.ts +6 -2
  14. package/dist/types/components/Button/Button.d.ts +7 -7
  15. package/dist/types/components/Calendar/Calendar.d.ts +60 -4
  16. package/dist/types/components/Card/Card.d.ts +2 -2
  17. package/dist/types/components/Code/Code.d.ts +1 -1
  18. package/dist/types/components/Collapsible/Collapsible.d.ts +26 -8
  19. package/dist/types/components/Collapsible/CollapsibleContext.d.ts +2 -2
  20. package/dist/types/components/Collapsible/CollapsibleTrigger.d.ts +22 -6
  21. package/dist/types/components/CommandMenu/CommandMenu.d.ts +1 -1
  22. package/dist/types/components/Container/Container.d.ts +21 -10
  23. package/dist/types/components/DataTable/DataTable.d.ts +63 -29
  24. package/dist/types/components/DataTable/DataTableContext.d.ts +3 -1
  25. package/dist/types/components/DateInput/DateInput.d.ts +8 -5
  26. package/dist/types/components/DateRangeInput/DateRangeInput.d.ts +6 -5
  27. package/dist/types/components/DescriptionList/DescriptionList.d.ts +38 -0
  28. package/dist/types/components/DescriptionList/DescriptionListItem.d.ts +15 -0
  29. package/dist/types/components/DescriptionList/index.d.ts +2 -0
  30. package/dist/types/components/Dialog/Dialog.d.ts +1 -2
  31. package/dist/types/components/Dialog/DialogContent.d.ts +3 -3
  32. package/dist/types/components/DropdownMenu/DropdownMenu.d.ts +1 -1
  33. package/dist/types/components/FieldGroup/FieldGroup.d.ts +42 -14
  34. package/dist/types/components/Grid/Grid.d.ts +64 -11
  35. package/dist/types/components/Icon/Icon.d.ts +1 -1
  36. package/dist/types/components/IconButton/IconButton.d.ts +8 -10
  37. package/dist/types/components/Input/Input.d.ts +2 -3
  38. package/dist/types/components/Link/Link.d.ts +1 -3
  39. package/dist/types/components/Mark/Mark.d.ts +1 -1
  40. package/dist/types/components/MenuList/MenuList.d.ts +5 -0
  41. package/dist/types/components/MenuList/MenuListItem.d.ts +3 -3
  42. package/dist/types/components/NumericInput/NumericInput.d.ts +2 -2
  43. package/dist/types/components/Popover/Popover.d.ts +32 -19
  44. package/dist/types/components/Popover/PopoverClose.d.ts +10 -3
  45. package/dist/types/components/Printer/Printer.d.ts +4 -4
  46. package/dist/types/components/Printer/PrinterContentContext.d.ts +4 -4
  47. package/dist/types/components/Printer/PrinterContext.d.ts +2 -2
  48. package/dist/types/components/Root/Root.d.ts +7 -7
  49. package/dist/types/components/Select/Select.d.ts +6 -0
  50. package/dist/types/components/Select/SelectContext.d.ts +2 -1
  51. package/dist/types/components/Select/SelectNative.d.ts +7 -0
  52. package/dist/types/components/Separator/Separator.d.ts +39 -1
  53. package/dist/types/components/Stack/Stack.d.ts +27 -5
  54. package/dist/types/components/Stepper/Step.d.ts +21 -6
  55. package/dist/types/components/Stepper/StepContent.d.ts +13 -4
  56. package/dist/types/components/Stepper/StepList.d.ts +8 -3
  57. package/dist/types/components/Stepper/Stepper.d.ts +51 -34
  58. package/dist/types/components/Stepper/StepperContext.d.ts +77 -4
  59. package/dist/types/components/Stepper/StepperFinishTrigger.d.ts +37 -0
  60. package/dist/types/components/Stepper/StepperNextTrigger.d.ts +34 -0
  61. package/dist/types/components/Stepper/StepperPreviousTrigger.d.ts +37 -0
  62. package/dist/types/components/Stepper/StepperState.d.ts +8 -0
  63. package/dist/types/components/Stepper/index.d.ts +5 -0
  64. package/dist/types/components/Table/Table.d.ts +2 -2
  65. package/dist/types/components/Table/TableColumn.d.ts +1 -1
  66. package/dist/types/components/Tabs/Tab.d.ts +6 -1
  67. package/dist/types/components/Tabs/Tabs.d.ts +1 -1
  68. package/dist/types/components/Toast/Toast.d.ts +81 -15
  69. package/dist/types/components/Tooltip/Tooltip.d.ts +4 -0
  70. package/dist/types/components/VisuallyHidden/VisuallyHidden.d.ts +22 -1
  71. package/dist/types/index.d.ts +1 -2
  72. package/dist/types/providers/AlertDialogProvider/AlertDialogProviderContext.d.ts +2 -2
  73. package/dist/types/providers/ErrorReportingProvider/ErrorReport.d.ts +3 -3
  74. package/dist/types/providers/ErrorReportingProvider/ErrorReportingProvider.d.ts +2 -2
  75. package/dist/types/providers/LocalizationProvider/LocalizationObject.d.ts +7 -0
  76. package/dist/types/providers/ToastManagerProvider/ToastManagerContext.d.ts +4 -2
  77. package/dist/types/utils/control.d.ts +1 -1
  78. package/dist/types/utils/keyboardShortcut.d.ts +1 -1
  79. package/dist/types/utils/useSearchParam.d.ts +5 -5
  80. package/dist/types/utils/useSearchParams.d.ts +7 -4
  81. package/package.json +3 -3
  82. package/scss/_utils.scss +3 -0
  83. package/scss/components/Checkbox/_Checkbox.scss +1 -1
  84. package/scss/components/Collapsible/_Collapsible-variables.scss +0 -1
  85. package/scss/components/Collapsible/_Collapsible.scss +2 -6
  86. package/scss/components/Container/_Container.scss +16 -5
  87. package/scss/components/DataTable/_DataTable-variables.scss +8 -5
  88. package/scss/components/DataTable/_DataTable.scss +2 -0
  89. package/scss/components/DateRangeInput/_DateRangeInput.scss +6 -1
  90. package/scss/components/DescriptionList/_DescriptionList-variables.scss +21 -0
  91. package/scss/components/DescriptionList/_DescriptionList.scss +33 -0
  92. package/scss/components/DropdownMenu/_DropdownMenu.scss +1 -3
  93. package/scss/components/FeedbackList/_FeedbackList.scss +1 -0
  94. package/scss/components/FeedbackPopover/_FeedbackPopover-variables.scss +9 -9
  95. package/scss/components/FeedbackPopover/_FeedbackPopover.scss +1 -1
  96. package/scss/components/Field/_Field-variables.scss +9 -0
  97. package/scss/components/Field/_Field.scss +6 -8
  98. package/scss/components/Input/_Input.scss +5 -0
  99. package/scss/components/Label/_Label-variables.scss +1 -1
  100. package/scss/components/MenuList/_MenuList.scss +4 -1
  101. package/scss/components/RadioGroup/_Radio.scss +1 -1
  102. package/scss/components/Separator/_Separator-variables.scss +11 -0
  103. package/scss/components/Separator/_Separator.scss +13 -5
  104. package/scss/components/Stepper/_Stepper-variables.scss +37 -9
  105. package/scss/components/Stepper/_Stepper.scss +69 -22
  106. package/scss/components/Tabs/_Tabs-variables.scss +1 -0
  107. package/scss/components/Tabs/_Tabs.scss +7 -4
  108. package/scss/index.scss +1 -0
  109. package/scss/scss/placeholders/checkable/_checkable.scss +3 -3
  110. package/scss/scss/placeholders/control/_control.scss +1 -1
  111. package/scss/scss/placeholders/menu/_menu.scss +5 -16
  112. package/scss/scss/utils/_animation.scss +1 -1
  113. package/scss/scss/utils/_transition.scss +1 -1
  114. package/dist/chunks/en-DwZKZVGL.js.map +0 -1
  115. package/dist/types/components/DatePicker/DatePicker.d.ts +0 -27
  116. package/dist/types/components/DatePicker/index.d.ts +0 -1
  117. package/dist/types/components/DateRangePicker/DateRangePicker.d.ts +0 -41
  118. package/dist/types/components/DateRangePicker/index.d.ts +0 -1
@@ -1,12 +1,14 @@
1
1
  @use "../ControlAddon/ControlAddon-variables" as *;
2
+ @use "../Field/Field-variables" as *;
3
+ @use "../Label/Label-variables" as *;
2
4
  @use "../../scss/base-variables" as *;
3
5
  @use "../../scss/utils/spacing" as *;
4
6
  @use "../../scss/placeholders/control/control-variables" as *;
5
7
 
6
- $feedback-popover-max-width: 500px !default;
7
- $feedback-popover-max-height: 600px !default;
8
- $feedback-popover-padding-y: spacing(1) !default;
9
- $feedback-popover-padding-x: spacing(2) !default;
8
+ $feedback-popover-max-width: $label-helper-popover-max-width !default;
9
+ $feedback-popover-max-height: $label-helper-popover-max-height !default;
10
+ $feedback-popover-padding-y: $label-helper-popover-padding-y !default;
11
+ $feedback-popover-padding-x: $label-helper-popover-padding-x !default;
10
12
 
11
13
  // Button - Within control
12
14
  $feedback-popover-button-control-inset-x: calc(
@@ -19,8 +21,6 @@ $feedback-popover-button-control-inset-x: calc(
19
21
  );
20
22
 
21
23
  // Feedback
22
- $feedback-popover-feedback-margin-y: spacing(0.5) !default;
23
- $feedback-popover-feedback-font-size: var(--#{$prefix}font-size-xs) !default;
24
- $feedback-popover-feedback-line-height: var(
25
- --#{$prefix}line-height-xs
26
- ) !default;
24
+ $feedback-popover-feedback-spacing-y: $field-feedback-spacing-y !default;
25
+ $feedback-popover-feedback-font-size: null !default;
26
+ $feedback-popover-feedback-line-height: null !default;
@@ -60,7 +60,7 @@
60
60
  line-height: $feedback-popover-feedback-line-height;
61
61
 
62
62
  ~ .#{$prefix}feedback {
63
- margin-top: $feedback-popover-feedback-margin-y;
63
+ margin-top: $feedback-popover-feedback-spacing-y;
64
64
  }
65
65
  }
66
66
  }
@@ -0,0 +1,9 @@
1
+ @use "../ControlCode/ControlCode-variables" as *;
2
+ @use "../../scss/base-variables" as *;
3
+ @use "../../scss/utils/spacing" as *;
4
+
5
+ $field-spacing-y: spacing(1) !default;
6
+ $field-feedback-spacing-y: spacing(0.5) !default;
7
+
8
+ // Has code
9
+ $field-has-code-margin-left: calc($control-code-width + spacing(0.5)) !default;
@@ -1,14 +1,12 @@
1
- @use "../ControlCode/ControlCode-variables" as *;
1
+ @use "Field-variables" as *;
2
2
  @use "../../scss/base-variables" as *;
3
- @use "../../scss/utils/declare-var" as *;
4
- @use "../../scss/utils/spacing" as *;
5
3
 
6
4
  .#{$prefix}field {
7
5
  width: 100%;
8
6
  break-inside: avoid;
9
7
 
10
8
  & > :is(.#{$prefix}control-code, .#{$prefix}label__container) {
11
- margin-bottom: spacing(1);
9
+ margin-bottom: $field-spacing-y;
12
10
  }
13
11
 
14
12
  :is(
@@ -16,14 +14,14 @@
16
14
  .#{$prefix}feedback-list:not(:empty),
17
15
  .#{$prefix}feedback
18
16
  ) {
19
- margin-top: spacing(1);
17
+ margin-top: $field-spacing-y;
20
18
 
21
19
  ~ :is(
22
20
  .#{$prefix}helper-text,
23
21
  .#{$prefix}feedback-list:not(:empty),
24
22
  .#{$prefix}feedback
25
23
  ) {
26
- margin-top: spacing(0.5);
24
+ margin-top: $field-feedback-spacing-y;
27
25
  }
28
26
  }
29
27
 
@@ -43,13 +41,13 @@
43
41
  & > .#{$prefix}label__container,
44
42
  .#{$prefix}helper-text,
45
43
  .#{$prefix}feedback {
46
- margin-left: calc($control-code-width + spacing(0.5));
44
+ margin-left: $field-has-code-margin-left;
47
45
  }
48
46
 
49
47
  // Add a padding to to the feedback list instead of a margin so that we can
50
48
  // use `margin-left: auto;` when right-aligning feedbacks
51
49
  .#{$prefix}feedback-list {
52
- padding-left: calc($control-code-width + spacing(0.5));
50
+ padding-left: $field-has-code-margin-left;
53
51
  }
54
52
  }
55
53
  }
@@ -221,6 +221,11 @@
221
221
  }
222
222
  }
223
223
 
224
+ // We provide our own clear button implementation
225
+ &::-webkit-search-cancel-button {
226
+ -webkit-appearance: none;
227
+ }
228
+
224
229
  // Fix height of inputs with a type of datetime-local, date, month, week, or
225
230
  // time
226
231
  ::-webkit-datetime-edit-fields-wrapper,
@@ -22,5 +22,5 @@ $label-helper-button-color: null !default;
22
22
  // Helper popover
23
23
  $label-helper-popover-max-width: 500px !default;
24
24
  $label-helper-popover-max-height: 600px !default;
25
- $label-helper-popover-padding-y: spacing(1) !default;
25
+ $label-helper-popover-padding-y: spacing(1.5) !default;
26
26
  $label-helper-popover-padding-x: spacing(2) !default;
@@ -35,7 +35,10 @@
35
35
  &:not([data-state="checked"][data-hide-control]) {
36
36
  &:is([data-highlighted], [data-state="open"], [data-selected])
37
37
  #{$menu-list}__item-action--#{$variant},
38
- #{$menu-list}__item-action--#{$variant}:not([data-loading]):hover {
38
+ #{$menu-list}__item-action--#{$variant}:not(
39
+ :disabled,
40
+ [data-disabled]
41
+ ):hover {
39
42
  @extend %#{$prefix}menu__item-action--#{$variant}--highlighted;
40
43
  }
41
44
  }
@@ -27,7 +27,7 @@
27
27
  @extend %#{$prefix}checkable__label--checked;
28
28
  }
29
29
 
30
- #{$radio}:is(:disabled, [data-loading]) ~ &-container > & {
30
+ #{$radio}:is(:disabled, [data-disabled]) ~ &-container > & {
31
31
  @extend %#{$prefix}checkable__label--disabled;
32
32
  }
33
33
  }
@@ -0,0 +1,11 @@
1
+ @use "../../scss/base-variables" as *;
2
+ @use "../../scss/utils/spacing" as *;
3
+
4
+ $separator-thickness: 1px !default;
5
+ $separator-color: var(--#{$prefix}accent-a6) !default;
6
+
7
+ // Horizontal
8
+ $separator-horizontal-default-length: 100% !default;
9
+
10
+ // Vertical
11
+ $separator-vertical-default-length: spacing(4) !default;
@@ -1,16 +1,24 @@
1
+ @use "Separator-variables" as *;
1
2
  @use "../../scss/base-variables" as *;
2
3
  @use "../../scss/utils/animation" as *;
3
4
 
4
5
  .#{$prefix}separator {
5
- flex-shrink: 0;
6
- background-color: $neutral-7;
6
+ display: block;
7
+ background-color: $separator-color;
7
8
 
8
9
  &[data-orientation="horizontal"] {
9
- height: 1px;
10
- width: 100%;
10
+ height: $separator-thickness;
11
+ width: var(
12
+ --#{$prefix}separator-length,
13
+ $separator-horizontal-default-length
14
+ );
11
15
  }
12
16
 
13
17
  &[data-orientation="vertical"] {
14
- width: 1px;
18
+ width: $separator-thickness;
19
+ height: var(
20
+ --#{$prefix}separator-length,
21
+ $separator-vertical-default-length
22
+ );
15
23
  }
16
24
  }
@@ -7,32 +7,60 @@ $stepper-step-list-margin-y: spacing(2) !default;
7
7
  // Step
8
8
  $stepper-step-size: 30px !default;
9
9
  $stepper-step-border-radius: 50% !default;
10
- $stepper-step-animation-duration: var(
11
- --#{$prefix}animation-fade-duration
12
- ) !default;
13
- $stepper-step-animation-timing-function: var(
14
- --#{$prefix}animation-fade-timing-function
15
- ) !default;
16
10
 
17
11
  // Step label
18
12
  $stepper-step-label-margin-y: spacing(2) !default;
19
13
 
20
14
  // Step label - Unvisited
21
- $stepper-step-label-unvisited-color: var(--#{$prefix}neutral-a9) !default;
15
+ $stepper-step-label-incomplete-color: var(--#{$prefix}neutral-a9) !default;
22
16
 
23
17
  // Step line
24
18
  $stepper-step-line-height: 2px !default;
25
19
  $stepper-step-line-background-color: var(--#{$prefix}neutral-a3) !default;
20
+ $stepper-step-line-transition-duration: 0.3s !default;
26
21
 
27
22
  // Step line - Status
28
23
  $stepper-step-line-status-background-color: var(--#{$prefix}accent-a3) !default;
29
24
 
30
25
  // Step line - Visited
31
- $stepper-step-line-visited-background-color: var(
26
+ $stepper-step-line-completed-background-color: var(
32
27
  --#{$prefix}primary-a9
33
28
  ) !default;
34
29
 
35
30
  // Step line - Visited + status
36
- $stepper-step-line-visited-status-background-color: var(
31
+ $stepper-step-line-completed-status-background-color: var(
37
32
  --#{$prefix}accent-a9
38
33
  ) !default;
34
+
35
+ // Step content label
36
+ $stepper-step-content-label-margin-bottom: spacing(1.5) !default;
37
+ $stepper-step-content-label-font-size: var(--#{$prefix}font-size-sm) !default;
38
+ $stepper-step-content-label-line-height: var(--#{$prefix}font-size-sm) !default;
39
+ $stepper-step-content-label-font-weight: $font-weight-medium !default;
40
+
41
+ // Step content label index
42
+ $stepper-step-content-label-index-margin-right: spacing(2) !default;
43
+ $stepper-step-content-label-index-size: $stepper-step-size !default;
44
+ $stepper-step-content-label-index-border-radius: $stepper-step-border-radius !default;
45
+ $stepper-step-content-label-index-background-color: var(
46
+ --#{$prefix}primary-9
47
+ ) !default;
48
+ $stepper-step-content-label-index-color: var(
49
+ --#{$prefix}primary-contrast
50
+ ) !default;
51
+
52
+ // Step content
53
+ $stepper-step-content-gap-y: spacing(3) !default;
54
+ $stepper-step-content-animation-duration: var(
55
+ --#{$prefix}animation-fade-duration
56
+ ) !default;
57
+ $stepper-step-content-animation-timing-function: var(
58
+ --#{$prefix}animation-fade-timing-function
59
+ ) !default;
60
+
61
+ // Step content - Focus
62
+ $stepper-step-content-focus-outline-width: 2px !default;
63
+ $stepper-step-content-focus-outline-color: var(--#{$prefix}primary-8) !default;
64
+
65
+ // Stepper trigger
66
+ $stepper-trigger-margin-x: spacing(2) !default;
@@ -5,8 +5,13 @@
5
5
 
6
6
  .#{$prefix}stepper {
7
7
  $stepper: &;
8
+ display: flex;
9
+ flex-wrap: wrap;
8
10
 
9
11
  &__step-list {
12
+ width: 100%;
13
+ margin: 0;
14
+ padding: 0;
10
15
  display: flex;
11
16
  justify-content: center;
12
17
 
@@ -15,7 +20,7 @@
15
20
  }
16
21
  }
17
22
 
18
- &__step-container {
23
+ &__step {
19
24
  position: relative;
20
25
  flex: 1 0;
21
26
  display: flex;
@@ -24,7 +29,7 @@
24
29
  justify-content: flex-end;
25
30
 
26
31
  // Line before the step number
27
- &::before {
32
+ &:not(:first-child)::before {
28
33
  content: "";
29
34
  display: block;
30
35
  position: absolute;
@@ -34,29 +39,27 @@
34
39
  width: calc(100% - $stepper-step-size);
35
40
  background-color: $stepper-step-line-background-color;
36
41
 
37
- @include accessible-transition($duration: 0.3s);
38
- }
39
-
40
- &:first-child::before {
41
- display: none;
42
+ @include accessible-transition(
43
+ $duration: $stepper-step-line-transition-duration
44
+ );
42
45
  }
43
46
 
44
47
  &[data-status]::before {
45
48
  background-color: $stepper-step-line-status-background-color;
46
49
  }
47
50
 
48
- &[data-visited] {
51
+ &:is([data-completed], [data-current]) {
49
52
  &::before {
50
- background-color: $stepper-step-line-visited-background-color;
53
+ background-color: $stepper-step-line-completed-background-color;
51
54
  }
52
55
 
53
56
  &[data-status]::before {
54
- background-color: $stepper-step-line-visited-status-background-color;
57
+ background-color: $stepper-step-line-completed-status-background-color;
55
58
  }
56
59
  }
57
60
  }
58
61
 
59
- &__step {
62
+ &__step-button {
60
63
  min-width: $stepper-step-size;
61
64
  min-height: $stepper-step-size;
62
65
  border-radius: $stepper-step-border-radius;
@@ -67,20 +70,64 @@
67
70
  margin-bottom: $stepper-step-label-margin-y;
68
71
  text-align: center;
69
72
 
70
- &:not([data-visited]) {
71
- color: $stepper-step-label-unvisited-color;
73
+ &:not([data-completed], [data-current]) {
74
+ color: $stepper-step-label-incomplete-color;
72
75
  }
73
76
  }
74
77
 
75
- // TODO: Improve animations
76
- &__step-content[data-state="active"] {
77
- @include accessible-animation(
78
- $animation-fade-in $stepper-step-animation-duration
79
- $stepper-step-animation-timing-function
80
- );
78
+ // Step content label (print only)
79
+ &__step-content-label {
80
+ display: inline-flex;
81
+ align-items: center;
82
+
83
+ margin-bottom: $stepper-step-content-label-margin-bottom;
84
+ font-size: $stepper-step-content-label-font-size;
85
+ line-height: $stepper-step-content-label-line-height;
86
+ font-weight: $stepper-step-content-label-font-weight;
81
87
  }
88
+ &__step-content-label-index {
89
+ display: inline-flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ margin-right: $stepper-step-content-label-index-margin-right;
93
+ min-width: $stepper-step-content-label-index-size;
94
+ min-height: $stepper-step-content-label-index-size;
95
+ border-radius: $stepper-step-content-label-index-border-radius;
96
+ background-color: $stepper-step-content-label-index-background-color;
97
+ color: $stepper-step-content-label-index-color;
98
+ }
99
+
100
+ &__step-content {
101
+ width: 100%;
82
102
 
83
- //&__step-content[data-state="inactive"] {
84
- // @include accessible-animation-close();
85
- //}
103
+ &:focus-visible {
104
+ outline: $stepper-step-content-focus-outline-width solid
105
+ $stepper-step-content-focus-outline-color;
106
+ }
107
+
108
+ // TODO: Improve animations
109
+ &[data-current] {
110
+ @include accessible-animation(
111
+ $animation-fade-in $stepper-step-content-animation-duration
112
+ $stepper-step-content-animation-timing-function
113
+ );
114
+ }
115
+ //&:not([data-current]) {
116
+ // @include accessible-animation-close();
117
+ //}
118
+
119
+ & + .#{$prefix}stepper__step-content-label {
120
+ margin-top: $stepper-step-content-gap-y;
121
+ }
122
+ }
123
+
124
+ &__next-trigger,
125
+ &__finish-trigger {
126
+ margin-left: auto;
127
+ }
128
+
129
+ :is(&__next-trigger, &__finish-trigger)
130
+ + :is(&__next-trigger, &__finish-trigger) {
131
+ margin-left: $stepper-trigger-margin-x;
132
+ }
86
133
  }
@@ -213,6 +213,7 @@ $tabs-tab-content-label-border-bottom: 2px solid var(--#{$prefix}primary-9) !def
213
213
  $tabs-tab-content-label-font-size: var(--#{$prefix}font-size-sm) !default;
214
214
  $tabs-tab-content-label-line-height: var(--#{$prefix}font-size-sm) !default;
215
215
  $tabs-tab-content-label-font-weight: $font-weight-medium !default;
216
+ $tabs-tab-content-label-color: null !default;
216
217
 
217
218
  // Tab content
218
219
  $tabs-tab-content-gap-y: spacing(2) !default;
@@ -342,10 +342,6 @@
342
342
 
343
343
  // Tab inner
344
344
  &__tab-inner {
345
- overflow: hidden;
346
- text-overflow: ellipsis;
347
- white-space: nowrap;
348
-
349
345
  max-width: $tabs-tab-inner-max-width;
350
346
  min-width: var(--#{$prefix}tabs-tab-inner-min-width);
351
347
  min-height: var(--#{$prefix}tabs-tab-inner-min-height);
@@ -381,6 +377,12 @@
381
377
  @include accessible-transition();
382
378
  }
383
379
 
380
+ &__tab-text {
381
+ overflow: hidden;
382
+ text-overflow: ellipsis;
383
+ white-space: nowrap;
384
+ }
385
+
384
386
  // Scroll button
385
387
  &__scroll-button {
386
388
  position: relative;
@@ -445,6 +447,7 @@
445
447
  font-size: $tabs-tab-content-label-font-size;
446
448
  line-height: $tabs-tab-content-label-line-height;
447
449
  font-weight: $tabs-tab-content-label-font-weight;
450
+ color: $tabs-tab-content-label-color;
448
451
  }
449
452
 
450
453
  // Tab content
package/scss/index.scss CHANGED
@@ -23,6 +23,7 @@
23
23
  @forward "components/DataTable/DataTable";
24
24
  @forward "components/DateInput/DateInput";
25
25
  @forward "components/DateRangeInput/DateRangeInput";
26
+ @forward "components/DescriptionList/DescriptionList";
26
27
  @forward "components/Dialog/Dialog";
27
28
  @forward "components/DropdownMenu/DropdownMenu";
28
29
  @forward "components/Feedback/Feedback";
@@ -139,11 +139,11 @@
139
139
 
140
140
  @include accessible-transition();
141
141
 
142
- &:not(:disabled, [data-loading], [data-readonly]) {
142
+ &:not(:disabled, [data-disabled], [data-readonly]) {
143
143
  cursor: pointer;
144
144
  }
145
145
 
146
- &:is(:disabled, [data-loading]) {
146
+ &:is(:disabled, [data-disabled]) {
147
147
  cursor: $checkable-disabled-cursor;
148
148
  opacity: $checkable-disabled-opacity;
149
149
  }
@@ -283,7 +283,7 @@
283
283
  }
284
284
  }
285
285
 
286
- &:active:not(:disabled, [data-loading], [data-readonly]) {
286
+ &:active:not(:disabled, [data-disabled], [data-readonly]) {
287
287
  background-color: var(--#{$prefix}checkable-active-background-color);
288
288
 
289
289
  &[data-status] {
@@ -58,7 +58,7 @@
58
58
  outline: 0;
59
59
  }
60
60
 
61
- &:is(:disabled, [data-loading]) {
61
+ &:is(:disabled, [data-disabled]) {
62
62
  opacity: $control-disabled-opacity;
63
63
  cursor: $control-disabled-cursor;
64
64
  }
@@ -72,24 +72,15 @@
72
72
 
73
73
  @include accessible-transition();
74
74
 
75
- &:is(button):not(:disabled):not([data-disabled=""]):not(
76
- [data-disabled="true"]
77
- ):not([data-loading]) {
75
+ &:is(button):not(:disabled, [data-disabled]) {
78
76
  cursor: $menu-item-button-cursor;
79
77
  }
80
78
 
81
- &:any-link:not(:disabled):not([data-disabled=""]):not(
82
- [data-disabled="true"]
83
- ):not([data-loading]) {
79
+ &:any-link:not(:disabled, [data-disabled]) {
84
80
  cursor: $menu-item-link-cursor;
85
81
  }
86
82
 
87
- &:is(
88
- :disabled,
89
- [data-disabled=""],
90
- [data-disabled="true"],
91
- [data-loading]
92
- ) {
83
+ &:is(:disabled, [data-disabled]) {
93
84
  cursor: $menu-item-disabled-cursor;
94
85
  opacity: $menu-item-disabled-opacity;
95
86
  }
@@ -130,9 +121,7 @@
130
121
  }
131
122
 
132
123
  // Item - Highlighted
133
- &--highlighted:not(:disabled):not([data-disabled=""]):not(
134
- [data-disabled="true"]
135
- ) {
124
+ &--highlighted:not(:disabled) {
136
125
  @include declare-var(
137
126
  --#{$prefix}menu-item-background-color,
138
127
  map.get(
@@ -276,7 +265,7 @@
276
265
  }
277
266
 
278
267
  // Item - Highlighted + Selected
279
- &--highlighted:not(:disabled):not([data-disabled]):is(&--selected) {
268
+ &--highlighted:not(:disabled):is(&--selected) {
280
269
  @include declare-var(
281
270
  --#{$prefix}menu-item-background-color,
282
271
  map.get(
@@ -3,7 +3,7 @@
3
3
  // Mixin used to apply animations depending on the `prefers-reduced-motion`
4
4
  // user preference.
5
5
  @mixin accessible-animation($args...) {
6
- @media (prefers-reduced-motion: no-preference) {
6
+ @media screen and (prefers-reduced-motion: no-preference) {
7
7
  animation: $args;
8
8
  }
9
9
  }
@@ -7,7 +7,7 @@
7
7
  $duration: var(--#{$prefix}transition-duration),
8
8
  $timing-function: var(--#{$prefix}transition-timing-function)
9
9
  ) {
10
- @media (prefers-reduced-motion: no-preference) {
10
+ @media screen and (prefers-reduced-motion: no-preference) {
11
11
  transition-property: $property;
12
12
  transition-duration: $duration;
13
13
  transition-timing-function: $timing-function;
@@ -1 +0,0 @@
1
- {"version":3,"file":"en-DwZKZVGL.js","sources":["../../src/locales/en.tsx"],"sourcesContent":["import type { LocalizationObject } from \"../providers/LocalizationProvider\";\nimport { IS_APPLE } from \"../utils/platformUtils.ts\";\n\n/** `en` locale (partial). */\nexport const en: Omit<LocalizationObject, \"languageTag\" | \"dayPickerLocale\"> = {\n AlertDialog: {\n okText: \"OK\",\n },\n Calendar: {\n monthSelectLabel: \"Month\",\n yearSelectLabel: \"Year\",\n previousMonthLabel: \"Previous month\",\n nextMonthLabel: \"Next month\",\n },\n CloseButton: {\n label: \"Close\",\n },\n CommandMenu: {\n searchPlaceholder: \"Search…\",\n listLabel: \"Suggestions\",\n loadingLabel: \"Loading…\",\n emptyMessage: \"No results found.\",\n },\n CommandMenuDialog: {\n title: \"Command palette\",\n description: \"Search for a command…\",\n },\n ConfirmDialog: {\n cancelText: \"Cancel\",\n },\n ControlCode: {\n visuallyHiddenPrefix: \"Field\",\n },\n DataTable: {\n selectAllRowsLabel: \"Select all\",\n selectRowLabel: \"Select\",\n },\n DataTableContent: {\n emptyMessage: \"Nothing to show.\",\n },\n DataTableFilter: {\n \"aria-label\": \"Table filter\",\n placeholder: \"Filter\",\n },\n DataTablePagination: {\n \"aria-label\": \"Table pagination\",\n rowsRangeSelectLabel: (total) => `Visible rows out of ${total}`,\n rowsRange: (range, total) => (\n <>\n Rows&nbsp;{range}&nbsp;of {total}\n </>\n ),\n previousPageButtonLabel: \"Previous page\",\n nextPageButtonLabel: \"Next page\",\n },\n DataTableRowsPerPage: {\n label: \"Rows per page:\",\n },\n DateInput: {\n selectedDateDescription: (date) => `Selected date, ${date}`,\n calendarButtonLabel: \"Open calendar\",\n },\n DateRangeInput: {\n startInputLabel: \"Start date\",\n endInputLabel: \"End date\",\n selectedDateRangeDescription: ({ start, end }) =>\n `Selected date range, ${start || \"missing start date\"} to ${\n end || \"missing end date\"\n }`,\n },\n ErrorBoundary: {\n fallbackMessage: (\n <>\n Something went wrong.\n <br />\n Press the button on the right to try again. If the problem persists,\n please try again later.\n </>\n ),\n resetButtonLabel: \"Retry\",\n },\n Feedback: {\n visuallyHiddenPrefix: (type) =>\n type === \"error\" ? \"Error,\" : type === \"warning\" ? \"Warning,\" : null,\n },\n FeedbackPopover: {\n label: \"Show feedback\",\n },\n FieldGroupHeader: {\n visuallyHiddenCodePrefix: \"Section\",\n },\n Input: {\n loadingDescription: \"Loading…\",\n clearButtonLabel: \"Clear\",\n },\n Keybinds: {\n keybindsSeparatorLabel: \"or\",\n keyPressesSeparatorLabel: \"then\",\n keyLabels: {\n Meta: IS_APPLE ? undefined : \"Windows Key\",\n },\n },\n Label: {\n helperButtonLabel: \"Show help\",\n },\n NumericInput: {\n decimalSeparator: \".\",\n groupingStyle: \"thousand\",\n groupSeparator: \",\",\n },\n RadioGroup: {\n clearDescription: \"Press Backspace or Delete to clear.\",\n },\n Select: {\n placeholder: \"Select…\",\n clearDescription: \"Press Backspace or Delete to clear.\",\n searchLabel: \"Search options\",\n optionsLabel: \"Options\",\n valueTagCloseButtonLabel: \"Remove\",\n },\n TableColumn: {\n helperButtonLabel: \"Show help\",\n },\n TableHead: {\n sortByColumnDescription: (columnName, sortDirection) =>\n sortDirection === null\n ? `Stop sorting table by column “${columnName}”`\n : `Sort table by column “${columnName}” in ${\n sortDirection === \"asc\" ? \"ascending\" : \"descending\"\n } order`,\n },\n TabList: {\n scrollLeftButtonLabel: \"Scroll left\",\n scrollRightButtonLabel: \"Scroll right\",\n },\n ToastProvider: {\n label: \"Notification\",\n },\n ToastViewport: {\n label: \"Notifications ({hotkey})\",\n },\n};\n"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { ComponentPropsWithoutRef } from 'react';
2
- import { Calendar } from '../Calendar';
3
- /** Properties of the date picker component. */
4
- export interface DatePickerProps extends ComponentPropsWithoutRef<typeof Calendar> {
5
- /** Default date value. */
6
- defaultValue?: Date | null;
7
- /** Controlled selected date value. */
8
- value?: Date | null;
9
- /** Action called whenever the date picker's value changes. */
10
- onChange?: (value: Date | null) => void;
11
- }
12
- /**
13
- * Date picker component built on top of [React
14
- * DayPicker](https://react-day-picker.js.org) and
15
- * [Calendar](/docs/ostack-ui-forms-calendar--docs) component, providing an
16
- * intuitive and easy-to-use interface for selecting a date. It acts as a
17
- * higher-level abstraction that manages date selection while offering both
18
- * controlled and uncontrolled usage scenarios.
19
- *
20
- * The DatePicker allows users to easily select a date by responding to click
21
- * events on the calendar days. When a date is clicked, the component updates
22
- * the selected date and triggers a callback, making it simple to integrate into
23
- * forms or other applications that need to track a chosen date.
24
- *
25
- * For detailed customization options, refer to the Calendar component story.
26
- */
27
- export declare function DatePicker({ defaultValue, value: controlledValue, defaultMonth, onChange, onDayClick, ...otherProps }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +0,0 @@
1
- export * from './DatePicker.tsx';
@@ -1,41 +0,0 @@
1
- import { ComponentPropsWithoutRef } from 'react';
2
- import { Calendar } from '../Calendar';
3
- /** A range of dates from a start date to an end date. */
4
- export interface DateRange {
5
- start: Date | null;
6
- end: Date | null;
7
- }
8
- /** Mode specifying which end of the range the user is controlling. */
9
- export type DateRangePickerSelectionMode = "start" | "end" | "both";
10
- /** Properties of the date-range picker component. */
11
- export interface DateRangePickerProps extends ComponentPropsWithoutRef<typeof Calendar> {
12
- /** Default date-range value. */
13
- defaultValue?: DateRange;
14
- /** Controlled selected date-range value. */
15
- value?: DateRange;
16
- /** Action called whenever the date-range picker's value changes. */
17
- onChange?: (value: DateRange) => void;
18
- /**
19
- * Specifies which end of the range the user is currently attempting to
20
- * change.
21
- *
22
- * @default "both"
23
- */
24
- selectionMode?: DateRangePickerSelectionMode;
25
- }
26
- /**
27
- * Date-range picker component built on top of [React
28
- * DayPicker](https://react-day-picker.js.org) and
29
- * [Calendar](/docs/ostack-ui-forms-calendar--docs). Unlike the `Calendar`,
30
- * `DateRangePicker` provides its own default event handlers for date selection.
31
- * It supports controlled and uncontrolled states, logical constraints to ensure
32
- * valid ranges, and flexible selection modes for the start, end, or both dates.
33
- * Interactive hover feedback helps users visualize their selections in
34
- * real-time.
35
- *
36
- * This component doesn’t have dedicated stories as its functionality is covered
37
- * by [DatePicker](/docs/ostack-ui-forms-date-picker--docs) and `Calendar`
38
- * stories, avoiding redundancy. Ideal for booking systems, dashboards, and
39
- * forms, it simplifies workflows requiring precise date range inputs.
40
- */
41
- export declare function DateRangePicker({ defaultValue, value: controlledValue, onChange, selectionMode, defaultMonth, modifiers, onDayClick, onDayFocus, onDayMouseEnter, numberOfMonths, ...otherProps }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +0,0 @@
1
- export * from './DateRangePicker.tsx';