@oods/component-styles 0.4.0 → 0.4.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.
package/README.md CHANGED
@@ -28,4 +28,4 @@ Use matching versions of the OODS packages. These packages are separate from the
28
28
 
29
29
  ## License
30
30
 
31
- Apache License 2.0. See [LICENSE](https://cdn.jsdelivr.net/npm/@oods/component-styles@0.4.0/LICENSE) and [NOTICE](https://cdn.jsdelivr.net/npm/@oods/component-styles@0.4.0/NOTICE). Generated output belongs to its user; installed package dependencies retain their own licenses.
31
+ Apache License 2.0. See [LICENSE](https://cdn.jsdelivr.net/npm/@oods/component-styles@0.4.1/LICENSE) and [NOTICE](https://cdn.jsdelivr.net/npm/@oods/component-styles@0.4.1/NOTICE). Generated output belongs to its user; installed package dependencies retain their own licenses.
@@ -115,7 +115,11 @@ var COMPONENT_STYLE_IDS = [
115
115
  "VizSizeSummary",
116
116
  // s222-m02 (#2502 ruling 11): styled in components-overlay.css, which components.css imports.
117
117
  "Dialog",
118
- "Switch"
118
+ "Switch",
119
+ // s223-m02 (#2527 ruling 11): styled in components-combobox.css, which components.css imports.
120
+ "Combobox",
121
+ // s223-m02 (#2527 ruling 10): styled in components-segmented-control.css, which components.css imports.
122
+ "SegmentedControl"
119
123
  ];
120
124
  var SUPPORTED_COMPONENT_THEME_CELLS = Object.freeze(brands.flatMap((brand) => ["light", "dark", "hc"].map((theme) => Object.freeze({ brand, theme }))));
121
125
  var COMPONENT_DATA_ATTRIBUTE = "data-oods-component";
@@ -0,0 +1,189 @@
1
+ /* s223-m02 (#2527 ruling 11): Combobox. components.css imports this sheet ahead of its own rules and the HTML renderer
2
+ * inlines it in the same place, so the three renderers paint one markup from the same rules. The input is a field control
3
+ * (.oods-field-control), so it takes the field's border, fill, hover, invalid and disabled looks, and the shared focus rule
4
+ * in components.css paints its focus; nothing here does. */
5
+
6
+ /* The size sets the control's block size, side padding and type, as Button, Input and Select have them at each size:
7
+ * xs 24 (12/16), sm 28 (14/20), md 32 (14/20) and lg 40 (16/24). An option in the list is the same height. */
8
+ :where(.oods-combobox, [data-oods-component='Combobox']) {
9
+ --oods-combobox-block-size: var(--sys-control-height-md);
10
+ --oods-combobox-padding-inline: var(--cmp-input-padding-inline);
11
+ --oods-combobox-font-size: var(--sys-text-scale-body-sm-font-size);
12
+ --oods-combobox-line-height: var(--sys-text-scale-body-sm-line-height);
13
+ }
14
+
15
+ :where(.oods-combobox, [data-oods-component='Combobox'])[data-size='xs'] {
16
+ --oods-combobox-block-size: var(--sys-control-height-xs);
17
+ --oods-combobox-padding-inline: var(--sys-control-padding-inline-xs);
18
+ --oods-combobox-font-size: var(--sys-text-scale-caption-font-size);
19
+ --oods-combobox-line-height: var(--sys-text-scale-caption-line-height);
20
+ }
21
+
22
+ :where(.oods-combobox, [data-oods-component='Combobox'])[data-size='sm'] {
23
+ --oods-combobox-block-size: var(--sys-control-height-sm);
24
+ --oods-combobox-padding-inline: var(--sys-control-padding-inline-sm);
25
+ }
26
+
27
+ :where(.oods-combobox, [data-oods-component='Combobox'])[data-size='lg'] {
28
+ --oods-combobox-block-size: var(--sys-control-height-lg);
29
+ --oods-combobox-padding-inline: var(--sys-control-padding-inline-lg);
30
+ --oods-combobox-font-size: var(--sys-text-scale-body-md-font-size);
31
+ --oods-combobox-line-height: var(--sys-text-scale-body-md-line-height);
32
+ }
33
+
34
+ /* The popup is placed against the control, so it opens under the input at the input's width. */
35
+ .oods-combobox__control {
36
+ position: relative;
37
+ min-inline-size: 0;
38
+ }
39
+
40
+ /* Two classes, so the size wins over the field control rule that components.css writes after this sheet. The text stops
41
+ * short of the chevron. */
42
+ .oods-combobox .oods-combobox__input {
43
+ min-block-size: var(--oods-combobox-block-size);
44
+ padding-inline: var(--oods-combobox-padding-inline) calc(var(--oods-combobox-padding-inline) + var(--sys-control-icon-size) + var(--sys-control-gap-compact));
45
+ font-size: var(--oods-combobox-font-size);
46
+ line-height: var(--oods-combobox-line-height);
47
+ text-overflow: ellipsis;
48
+ }
49
+
50
+ /* The chevron is the shared 16px mark in the muted text colour; it turns over while the list is open and lets a click
51
+ * through to the input. */
52
+ .oods-combobox__chevron {
53
+ position: absolute;
54
+ inset-block: 0;
55
+ inset-inline-end: var(--oods-combobox-padding-inline);
56
+ display: flex;
57
+ align-items: center;
58
+ color: var(--sys-text-muted);
59
+ pointer-events: none;
60
+ }
61
+
62
+ .oods-combobox__chevron > svg {
63
+ display: block;
64
+ inline-size: var(--sys-control-icon-size);
65
+ block-size: var(--sys-control-icon-size);
66
+ transition: transform var(--oods-motion-duration-fast) var(--oods-motion-easing-standard);
67
+ }
68
+
69
+ .oods-combobox__input[aria-expanded='true'] + .oods-combobox__chevron > svg { transform: rotate(180deg); }
70
+ .oods-combobox__input:disabled + .oods-combobox__chevron { color: var(--sys-text-disabled); }
71
+
72
+ /* The popup takes the overlay elevation (#2502 ruling 10): the raised surface with a 1px ring and the overlay drop (a ring
73
+ * in dark), the large control radius, and at most eight md rows (16rem) before it scrolls. */
74
+ .oods-combobox__popup {
75
+ position: absolute;
76
+ inset-block-start: 100%;
77
+ inset-inline: 0;
78
+ z-index: var(--oods-z-overlay);
79
+ box-sizing: border-box;
80
+ max-block-size: calc(8 * var(--sys-control-height-md));
81
+ margin-block-start: var(--sys-control-gap-compact);
82
+ padding: var(--sys-control-gap-compact);
83
+ overflow-y: auto;
84
+ overscroll-behavior: contain;
85
+ border: 1px solid var(--sys-border-subtle);
86
+ border-radius: var(--sys-radius-control-lg);
87
+ background: var(--sys-surface-raised);
88
+ color: var(--sys-text-primary);
89
+ box-shadow: var(--cmp-shadow-overlay-offset-x) var(--cmp-shadow-overlay-offset-y) var(--cmp-shadow-overlay-blur) var(--cmp-shadow-overlay-spread) var(--cmp-shadow-overlay-color);
90
+ }
91
+
92
+ .oods-combobox__listbox {
93
+ margin: 0;
94
+ padding: 0;
95
+ list-style: none;
96
+ }
97
+
98
+ /* An option is the control height; its text lines up with the input's text, and the check mark sits at its end. */
99
+ .oods-combobox__option {
100
+ display: flex;
101
+ align-items: center;
102
+ gap: var(--sys-control-gap);
103
+ box-sizing: border-box;
104
+ min-block-size: var(--oods-combobox-block-size);
105
+ padding-inline: calc(var(--oods-combobox-padding-inline) - var(--sys-control-gap-compact));
106
+ border-radius: var(--sys-radius-control);
107
+ font-size: var(--oods-combobox-font-size);
108
+ line-height: var(--oods-combobox-line-height);
109
+ overflow-wrap: anywhere;
110
+ cursor: pointer;
111
+ user-select: none;
112
+ }
113
+
114
+ .oods-combobox__option[hidden] { display: none; }
115
+
116
+ .oods-combobox__option-label {
117
+ flex: 1 1 auto;
118
+ min-inline-size: 0;
119
+ }
120
+
121
+ /* The active option is on the hover fill. */
122
+ .oods-combobox__option[data-active='true'] { background: var(--sys-surface-interactive-secondary-default); }
123
+
124
+ .oods-combobox__option[aria-disabled='true'] {
125
+ color: var(--sys-text-disabled);
126
+ cursor: not-allowed;
127
+ }
128
+
129
+ /* The chosen option shows the shared check mark in its text colour; the others keep its room, so no label moves. */
130
+ .oods-combobox__check {
131
+ display: flex;
132
+ flex: none;
133
+ visibility: hidden;
134
+ }
135
+
136
+ .oods-combobox__check > svg {
137
+ display: block;
138
+ inline-size: var(--sys-control-icon-size);
139
+ block-size: var(--sys-control-icon-size);
140
+ }
141
+
142
+ .oods-combobox__option[aria-selected='true'] > .oods-combobox__check { visibility: visible; }
143
+
144
+ /* No matches is muted text in an option's place; it is not an option, and it takes no room while it is empty. */
145
+ .oods-combobox__empty {
146
+ display: flex;
147
+ align-items: center;
148
+ min-block-size: var(--oods-combobox-block-size);
149
+ margin: 0;
150
+ padding-inline: calc(var(--oods-combobox-padding-inline) - var(--sys-control-gap-compact));
151
+ color: var(--sys-text-muted);
152
+ font-size: var(--oods-combobox-font-size);
153
+ line-height: var(--oods-combobox-line-height);
154
+ }
155
+
156
+ .oods-combobox__empty:empty { display: none; }
157
+
158
+ @media (prefers-reduced-motion: reduce) {
159
+ .oods-combobox__chevron > svg { transition: none; }
160
+ }
161
+
162
+ /* In high contrast the popup is Canvas with a CanvasText ring and no drop, the active option is Highlight on
163
+ * HighlightText, and a disabled option is GrayText. */
164
+ [data-theme='hc'] .oods-combobox__popup:not(:where([data-theme='hc'] [data-theme]:not([data-theme='hc']) *)) {
165
+ border-color: CanvasText;
166
+ background: Canvas;
167
+ color: CanvasText;
168
+ box-shadow: none;
169
+ }
170
+
171
+ [data-theme='hc'] .oods-combobox__option[data-active='true']:not(:where([data-theme='hc'] [data-theme]:not([data-theme='hc']) *)) {
172
+ forced-color-adjust: none;
173
+ background: Highlight;
174
+ color: HighlightText;
175
+ }
176
+
177
+ [data-theme='hc'] .oods-combobox__option[aria-disabled='true']:not(:where([data-theme='hc'] [data-theme]:not([data-theme='hc']) *)) {
178
+ color: GrayText;
179
+ }
180
+
181
+ @media (forced-colors: active) {
182
+ .oods-combobox__popup { border-color: CanvasText; }
183
+ .oods-combobox__option[data-active='true'] {
184
+ forced-color-adjust: none;
185
+ background: Highlight;
186
+ color: HighlightText;
187
+ }
188
+ .oods-combobox__option[aria-disabled='true'] { color: GrayText; }
189
+ }
@@ -0,0 +1,130 @@
1
+ /* s223-m02 (#2527 ruling 10): SegmentedControl, one choice from two to five options shown as joined segments. React, Vue
2
+ * and the HTML renderer write one markup: a radiogroup track of segments, each a label holding its native radio and its
3
+ * text. components.css imports this sheet ahead of its own rules and the HTML renderer inlines it in the same place.
4
+ *
5
+ * The track is the subtle fill at the control height of each size (xs 24, sm 28, md 32, lg 40: the button, input and
6
+ * select heights, #2502 ruling 9), inset 2px around its segments. The checked segment is the raised surface with a
7
+ * hairline ring and its label in the primary text colour; the others are muted. Every label is the control weight (500),
8
+ * so no segment's width moves with the selection. Each radio is transparent over its whole segment: it takes the clicks,
9
+ * and the shared focus rule in components.css draws its ring there, so nothing here paints focus. */
10
+ :where(.oods-segmented-control, [data-oods-component='SegmentedControl']) {
11
+ --oods-segmented-control-block-size: var(--sys-control-height-md);
12
+ --oods-segmented-control-padding-inline: var(--sys-control-padding-inline);
13
+ --oods-segmented-control-font-size: var(--sys-text-scale-label-font-size);
14
+ --oods-segmented-control-line-height: var(--sys-text-scale-label-line-height);
15
+ }
16
+
17
+ /* The button's type and side padding at each size: caption 12/16 and 8px at xs, label 14/20 and 10px at sm, 12px at
18
+ * md, body-md 16/24 and 16px at lg. */
19
+ :where(.oods-segmented-control, [data-oods-component='SegmentedControl'])[data-size='xs'] {
20
+ --oods-segmented-control-block-size: var(--sys-control-height-xs);
21
+ --oods-segmented-control-padding-inline: var(--sys-control-padding-inline-xs);
22
+ --oods-segmented-control-font-size: var(--sys-text-scale-caption-font-size);
23
+ --oods-segmented-control-line-height: var(--sys-text-scale-caption-line-height);
24
+ }
25
+
26
+ :where(.oods-segmented-control, [data-oods-component='SegmentedControl'])[data-size='sm'] {
27
+ --oods-segmented-control-block-size: var(--sys-control-height-sm);
28
+ --oods-segmented-control-padding-inline: var(--sys-control-padding-inline-sm);
29
+ }
30
+
31
+ :where(.oods-segmented-control, [data-oods-component='SegmentedControl'])[data-size='lg'] {
32
+ --oods-segmented-control-block-size: var(--sys-control-height-lg);
33
+ --oods-segmented-control-padding-inline: var(--sys-control-padding-inline-lg);
34
+ --oods-segmented-control-font-size: var(--sys-text-scale-body-md-font-size);
35
+ --oods-segmented-control-line-height: var(--sys-text-scale-body-md-line-height);
36
+ }
37
+
38
+ /* Equal segments, each as wide as the widest label, while the field has room for that. In a narrower field every segment
39
+ * keeps its whole label and only the shorter ones give up width; a label is never cut. A field too narrow for the labels
40
+ * themselves (five options at lg need about 380px) is outgrown, so on a phone use md or smaller for five. */
41
+ .oods-segmented-control__track {
42
+ display: inline-grid;
43
+ grid-auto-columns: minmax(max-content, 1fr);
44
+ grid-auto-flow: column;
45
+ justify-self: start;
46
+ box-sizing: border-box;
47
+ block-size: var(--oods-segmented-control-block-size);
48
+ padding: var(--ref-space-ramp-050);
49
+ border-radius: var(--sys-radius-control);
50
+ background: var(--sys-surface-interactive-secondary-default);
51
+ }
52
+
53
+ .oods-segmented-control__option {
54
+ position: relative;
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+ box-sizing: border-box;
59
+ padding-inline: var(--oods-segmented-control-padding-inline);
60
+ border: 1px solid transparent;
61
+ border-radius: var(--sys-radius-control-sm);
62
+ color: var(--sys-text-muted);
63
+ font-size: var(--oods-segmented-control-font-size);
64
+ font-weight: var(--sys-text-scale-label-font-weight);
65
+ line-height: var(--oods-segmented-control-line-height);
66
+ white-space: nowrap;
67
+ cursor: pointer;
68
+ }
69
+
70
+ /* The radio fills its segment and paints nothing of its own, so its focus ring is drawn on the segment. The selector
71
+ * outranks the rule in components.css that sizes every radio in a component at 16px. */
72
+ .oods-segmented-control__option > input.oods-segmented-control__input[type='radio'] {
73
+ position: absolute;
74
+ inset: 0;
75
+ inline-size: 100%;
76
+ block-size: 100%;
77
+ margin: 0;
78
+ border: 0;
79
+ border-radius: inherit;
80
+ background: transparent;
81
+ appearance: none;
82
+ cursor: inherit;
83
+ }
84
+
85
+ /* A hovered unchecked segment reads in the primary text colour; the :where() keeps it below the high-contrast rules. */
86
+ .oods-segmented-control__option:where(:hover:not(:has(> :checked, > :disabled))) { color: var(--sys-text-primary); }
87
+
88
+ .oods-segmented-control__option:has(> .oods-segmented-control__input:checked) {
89
+ border-color: var(--sys-border-subtle);
90
+ background: var(--sys-surface-raised);
91
+ color: var(--sys-text-primary);
92
+ }
93
+
94
+ .oods-segmented-control__option:has(> .oods-segmented-control__input:disabled) {
95
+ color: var(--sys-text-disabled);
96
+ cursor: not-allowed;
97
+ }
98
+
99
+ /* s223-m02 (#2527 ruling 10, after #2502 ruling 6): in high contrast the checked segment is Highlight with HighlightText,
100
+ * and every other segment is Canvas and CanvasText with a 1px CanvasText border. A disabled segment is GrayText, and a
101
+ * disabled checked one GrayText with Canvas text, so the choice still shows. */
102
+ [data-theme='hc'] .oods-segmented-control__option:not(:where([data-theme='hc'] [data-theme]:not([data-theme='hc']) *)) {
103
+ forced-color-adjust: none;
104
+ border-color: CanvasText;
105
+ background: Canvas;
106
+ color: CanvasText;
107
+ }
108
+
109
+ [data-theme='hc'] .oods-segmented-control__option:has(> .oods-segmented-control__input:checked):not(:where([data-theme='hc'] [data-theme]:not([data-theme='hc']) *)) {
110
+ border-color: Highlight;
111
+ background: Highlight;
112
+ color: HighlightText;
113
+ }
114
+
115
+ [data-theme='hc'] .oods-segmented-control__option:has(> .oods-segmented-control__input:disabled):not(:where([data-theme='hc'] [data-theme]:not([data-theme='hc']) *)) {
116
+ border-color: GrayText;
117
+ color: GrayText;
118
+ }
119
+
120
+ [data-theme='hc'] .oods-segmented-control__option:has(> .oods-segmented-control__input:checked:disabled):not(:where([data-theme='hc'] [data-theme]:not([data-theme='hc']) *)) {
121
+ background: GrayText;
122
+ color: Canvas;
123
+ }
124
+
125
+ @media (forced-colors: active) {
126
+ .oods-segmented-control__option { forced-color-adjust: none; border-color: CanvasText; background: Canvas; color: CanvasText; }
127
+ .oods-segmented-control__option:has(> .oods-segmented-control__input:checked) { border-color: Highlight; background: Highlight; color: HighlightText; }
128
+ .oods-segmented-control__option:has(> .oods-segmented-control__input:disabled) { border-color: GrayText; color: GrayText; }
129
+ .oods-segmented-control__option:has(> .oods-segmented-control__input:checked:disabled) { background: GrayText; color: Canvas; }
130
+ }
@@ -1,6 +1,8 @@
1
1
  @import "@oods/tokens/css";
2
2
  @import "./statusables.css";
3
3
  @import "./components-overlay.css";
4
+ @import "./components-combobox.css";
5
+ @import "./components-segmented-control.css";
4
6
 
5
7
  /* Legacy unprefixed geometry used by billing recipes. Values come from the
6
8
  * semantic layer; preserve these names until their authored callers migrate. */
package/dist/index.cjs CHANGED
@@ -117,7 +117,11 @@ var COMPONENT_STYLE_IDS = [
117
117
  "VizSizeSummary",
118
118
  // s222-m02 (#2502 ruling 11): styled in components-overlay.css, which components.css imports.
119
119
  "Dialog",
120
- "Switch"
120
+ "Switch",
121
+ // s223-m02 (#2527 ruling 11): styled in components-combobox.css, which components.css imports.
122
+ "Combobox",
123
+ // s223-m02 (#2527 ruling 10): styled in components-segmented-control.css, which components.css imports.
124
+ "SegmentedControl"
121
125
  ];
122
126
  var SUPPORTED_COMPONENT_THEME_CELLS = Object.freeze(brands.brands.flatMap((brand) => ["light", "dark", "hc"].map((theme) => Object.freeze({ brand, theme }))));
123
127
  var COMPONENT_DATA_ATTRIBUTE = "data-oods-component";
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  declare const COMPONENT_STYLE_VERSION: "1.0.0";
2
- declare const COMPONENT_STYLE_IDS: readonly ["AddressCollectionPanel", "AddressEditor", "AddressSummaryBadge", "AddressValidationTimeline", "ArchivePill", "ArchiveSummary", "AuditEvent", "AuditTimeline", "Badge", "Banner", "ArchivedRowOverlay", "BillingSummaryBadge", "BillingAmountInput", "BillingIntervalSelector", "BillingCardMeta", "AuditSummaryCard", "SortIndicator", "TimelineEntryLabel", "CycleProgressCard", "PaymentTimeline", "PaymentEventTimeline", "Button", "CancellationBadge", "CancellationForm", "CancellationSummary", "Card", "CardHeader", "Checkbox", "ClassificationBadge", "ClassificationEditor", "ClassificationPanel", "ColorSwatch", "ColorizedBadge", "DatePicker", "DetailHeader", "FilterPanel", "FormLabelGroup", "Grid", "InlineLabel", "Input", "LabelCell", "MembershipAuditTimeline", "MembershipPanel", "MessageEventTimeline", "MessageStatusBadge", "OwnerBadge", "OwnershipMeta", "OwnershipSummary", "PaginationBar", "PreferenceEditor", "PreferencePanel", "PreferenceSummaryBadge", "PreferenceTimeline", "PriceBadge", "PriceCardMeta", "PriceSummary", "RelativeTimestamp", "RoleAssignmentForm", "RoleBadgeList", "SearchInput", "Select", "Stack", "StatusBadge", "StatusSelector", "StatusTimeline", "Table", "Tabs", "TagInput", "TagManager", "TagPills", "TagSummary", "TemplatePicker", "Text", "Textarea", "VizAreaPreview", "ArchiveEvent", "CancellationEvent", "ColorStatePicker", "CommunicationDetailPanel", "GeoFieldMappingForm", "GeoResolutionBadge", "GeocodablePreview", "StateTransitionEvent", "StatusColorLegend", "VizAreaControls", "VizAxisControls", "VizAxisSummary", "VizColorControls", "VizColorLegendConfig", "VizEncodingBadge", "VizGraphPreview", "VizHeatmapControls", "VizHeatmapPreview", "VizLineControls", "VizLinePreview", "VizMarkControls", "VizMarkPreview", "VizOpacityControls", "VizOpacitySummary", "VizPointControls", "VizPointPreview", "VizRoleBadge", "VizScaleControls", "VizScaleSummary", "VizScatterControls", "VizScatterPreview", "VizShapeControls", "VizShapeLegend", "VizSizeControls", "VizSizeSummary", "Dialog", "Switch"];
2
+ declare const COMPONENT_STYLE_IDS: readonly ["AddressCollectionPanel", "AddressEditor", "AddressSummaryBadge", "AddressValidationTimeline", "ArchivePill", "ArchiveSummary", "AuditEvent", "AuditTimeline", "Badge", "Banner", "ArchivedRowOverlay", "BillingSummaryBadge", "BillingAmountInput", "BillingIntervalSelector", "BillingCardMeta", "AuditSummaryCard", "SortIndicator", "TimelineEntryLabel", "CycleProgressCard", "PaymentTimeline", "PaymentEventTimeline", "Button", "CancellationBadge", "CancellationForm", "CancellationSummary", "Card", "CardHeader", "Checkbox", "ClassificationBadge", "ClassificationEditor", "ClassificationPanel", "ColorSwatch", "ColorizedBadge", "DatePicker", "DetailHeader", "FilterPanel", "FormLabelGroup", "Grid", "InlineLabel", "Input", "LabelCell", "MembershipAuditTimeline", "MembershipPanel", "MessageEventTimeline", "MessageStatusBadge", "OwnerBadge", "OwnershipMeta", "OwnershipSummary", "PaginationBar", "PreferenceEditor", "PreferencePanel", "PreferenceSummaryBadge", "PreferenceTimeline", "PriceBadge", "PriceCardMeta", "PriceSummary", "RelativeTimestamp", "RoleAssignmentForm", "RoleBadgeList", "SearchInput", "Select", "Stack", "StatusBadge", "StatusSelector", "StatusTimeline", "Table", "Tabs", "TagInput", "TagManager", "TagPills", "TagSummary", "TemplatePicker", "Text", "Textarea", "VizAreaPreview", "ArchiveEvent", "CancellationEvent", "ColorStatePicker", "CommunicationDetailPanel", "GeoFieldMappingForm", "GeoResolutionBadge", "GeocodablePreview", "StateTransitionEvent", "StatusColorLegend", "VizAreaControls", "VizAxisControls", "VizAxisSummary", "VizColorControls", "VizColorLegendConfig", "VizEncodingBadge", "VizGraphPreview", "VizHeatmapControls", "VizHeatmapPreview", "VizLineControls", "VizLinePreview", "VizMarkControls", "VizMarkPreview", "VizOpacityControls", "VizOpacitySummary", "VizPointControls", "VizPointPreview", "VizRoleBadge", "VizScaleControls", "VizScaleSummary", "VizScatterControls", "VizScatterPreview", "VizShapeControls", "VizShapeLegend", "VizSizeControls", "VizSizeSummary", "Dialog", "Switch", "Combobox", "SegmentedControl"];
3
3
  /**
4
4
  * Every brand × theme cell the component styles serve. Components read only brand-independent variables, so each
5
5
  * brand the token build carries is a cell in each theme (s213-m04: the list comes from the brand registry).
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  declare const COMPONENT_STYLE_VERSION: "1.0.0";
2
- declare const COMPONENT_STYLE_IDS: readonly ["AddressCollectionPanel", "AddressEditor", "AddressSummaryBadge", "AddressValidationTimeline", "ArchivePill", "ArchiveSummary", "AuditEvent", "AuditTimeline", "Badge", "Banner", "ArchivedRowOverlay", "BillingSummaryBadge", "BillingAmountInput", "BillingIntervalSelector", "BillingCardMeta", "AuditSummaryCard", "SortIndicator", "TimelineEntryLabel", "CycleProgressCard", "PaymentTimeline", "PaymentEventTimeline", "Button", "CancellationBadge", "CancellationForm", "CancellationSummary", "Card", "CardHeader", "Checkbox", "ClassificationBadge", "ClassificationEditor", "ClassificationPanel", "ColorSwatch", "ColorizedBadge", "DatePicker", "DetailHeader", "FilterPanel", "FormLabelGroup", "Grid", "InlineLabel", "Input", "LabelCell", "MembershipAuditTimeline", "MembershipPanel", "MessageEventTimeline", "MessageStatusBadge", "OwnerBadge", "OwnershipMeta", "OwnershipSummary", "PaginationBar", "PreferenceEditor", "PreferencePanel", "PreferenceSummaryBadge", "PreferenceTimeline", "PriceBadge", "PriceCardMeta", "PriceSummary", "RelativeTimestamp", "RoleAssignmentForm", "RoleBadgeList", "SearchInput", "Select", "Stack", "StatusBadge", "StatusSelector", "StatusTimeline", "Table", "Tabs", "TagInput", "TagManager", "TagPills", "TagSummary", "TemplatePicker", "Text", "Textarea", "VizAreaPreview", "ArchiveEvent", "CancellationEvent", "ColorStatePicker", "CommunicationDetailPanel", "GeoFieldMappingForm", "GeoResolutionBadge", "GeocodablePreview", "StateTransitionEvent", "StatusColorLegend", "VizAreaControls", "VizAxisControls", "VizAxisSummary", "VizColorControls", "VizColorLegendConfig", "VizEncodingBadge", "VizGraphPreview", "VizHeatmapControls", "VizHeatmapPreview", "VizLineControls", "VizLinePreview", "VizMarkControls", "VizMarkPreview", "VizOpacityControls", "VizOpacitySummary", "VizPointControls", "VizPointPreview", "VizRoleBadge", "VizScaleControls", "VizScaleSummary", "VizScatterControls", "VizScatterPreview", "VizShapeControls", "VizShapeLegend", "VizSizeControls", "VizSizeSummary", "Dialog", "Switch"];
2
+ declare const COMPONENT_STYLE_IDS: readonly ["AddressCollectionPanel", "AddressEditor", "AddressSummaryBadge", "AddressValidationTimeline", "ArchivePill", "ArchiveSummary", "AuditEvent", "AuditTimeline", "Badge", "Banner", "ArchivedRowOverlay", "BillingSummaryBadge", "BillingAmountInput", "BillingIntervalSelector", "BillingCardMeta", "AuditSummaryCard", "SortIndicator", "TimelineEntryLabel", "CycleProgressCard", "PaymentTimeline", "PaymentEventTimeline", "Button", "CancellationBadge", "CancellationForm", "CancellationSummary", "Card", "CardHeader", "Checkbox", "ClassificationBadge", "ClassificationEditor", "ClassificationPanel", "ColorSwatch", "ColorizedBadge", "DatePicker", "DetailHeader", "FilterPanel", "FormLabelGroup", "Grid", "InlineLabel", "Input", "LabelCell", "MembershipAuditTimeline", "MembershipPanel", "MessageEventTimeline", "MessageStatusBadge", "OwnerBadge", "OwnershipMeta", "OwnershipSummary", "PaginationBar", "PreferenceEditor", "PreferencePanel", "PreferenceSummaryBadge", "PreferenceTimeline", "PriceBadge", "PriceCardMeta", "PriceSummary", "RelativeTimestamp", "RoleAssignmentForm", "RoleBadgeList", "SearchInput", "Select", "Stack", "StatusBadge", "StatusSelector", "StatusTimeline", "Table", "Tabs", "TagInput", "TagManager", "TagPills", "TagSummary", "TemplatePicker", "Text", "Textarea", "VizAreaPreview", "ArchiveEvent", "CancellationEvent", "ColorStatePicker", "CommunicationDetailPanel", "GeoFieldMappingForm", "GeoResolutionBadge", "GeocodablePreview", "StateTransitionEvent", "StatusColorLegend", "VizAreaControls", "VizAxisControls", "VizAxisSummary", "VizColorControls", "VizColorLegendConfig", "VizEncodingBadge", "VizGraphPreview", "VizHeatmapControls", "VizHeatmapPreview", "VizLineControls", "VizLinePreview", "VizMarkControls", "VizMarkPreview", "VizOpacityControls", "VizOpacitySummary", "VizPointControls", "VizPointPreview", "VizRoleBadge", "VizScaleControls", "VizScaleSummary", "VizScatterControls", "VizScatterPreview", "VizShapeControls", "VizShapeLegend", "VizSizeControls", "VizSizeSummary", "Dialog", "Switch", "Combobox", "SegmentedControl"];
3
3
  /**
4
4
  * Every brand × theme cell the component styles serve. Components read only brand-independent variables, so each
5
5
  * brand the token build carries is a cell in each theme (s213-m04: the list comes from the brand registry).
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export { COMPONENT_DATA_ATTRIBUTE, COMPONENT_STYLE_IDS, COMPONENT_STYLE_VERSION, SUPPORTED_COMPONENT_THEME_CELLS } from './chunk-T5I3FGSQ.js';
1
+ export { COMPONENT_DATA_ATTRIBUTE, COMPONENT_STYLE_IDS, COMPONENT_STYLE_VERSION, SUPPORTED_COMPONENT_THEME_CELLS } from './chunk-PGAP2D2D.js';
package/dist/ported.cjs CHANGED
@@ -117,7 +117,11 @@ var COMPONENT_STYLE_IDS = [
117
117
  "VizSizeSummary",
118
118
  // s222-m02 (#2502 ruling 11): styled in components-overlay.css, which components.css imports.
119
119
  "Dialog",
120
- "Switch"
120
+ "Switch",
121
+ // s223-m02 (#2527 ruling 11): styled in components-combobox.css, which components.css imports.
122
+ "Combobox",
123
+ // s223-m02 (#2527 ruling 10): styled in components-segmented-control.css, which components.css imports.
124
+ "SegmentedControl"
121
125
  ];
122
126
  Object.freeze(brands.brands.flatMap((brand) => ["light", "dark", "hc"].map((theme) => Object.freeze({ brand, theme }))));
123
127
 
package/dist/ported.js CHANGED
@@ -1,4 +1,4 @@
1
- import { COMPONENT_STYLE_IDS, COMPONENT_STYLE_VERSION } from './chunk-T5I3FGSQ.js';
1
+ import { COMPONENT_STYLE_IDS, COMPONENT_STYLE_VERSION } from './chunk-PGAP2D2D.js';
2
2
 
3
3
  // src/ported.ts
4
4
  var PORTED_COMPONENT_STYLE_VERSION = COMPONENT_STYLE_VERSION;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oods/component-styles",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Shared CSS for the OODS Foundry React and Vue components, driven by its design tokens.",
5
5
  "homepage": "https://oods-foundry.com/",
6
6
  "bugs": {
@@ -49,10 +49,10 @@
49
49
  "**/*.css"
50
50
  ],
51
51
  "dependencies": {
52
- "@oods/tokens": "0.4.0"
52
+ "@oods/tokens": "0.4.1"
53
53
  },
54
54
  "devDependencies": {
55
- "@oods/component-contracts": "0.4.0",
55
+ "@oods/component-contracts": "0.4.1",
56
56
  "playwright": "^1.56.1"
57
57
  },
58
58
  "packageManager": "pnpm@9.12.2",