@flytedan/flytebot-design-system 0.28.0 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flytedan/flytebot-design-system",
3
- "version": "0.28.0",
3
+ "version": "0.30.0",
4
4
  "description": "flytedesk Design System — shared component library, tokens, and business-logic kits for flytedesk apps.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -2821,6 +2821,51 @@
2821
2821
  transform: rotate(180deg);
2822
2822
  }
2823
2823
 
2824
+ /* ============ FilterBar (MP-243) ============ */
2825
+ /* The bar itself: a wrapping row of chips plus the trailing "Filter" trigger. Kept as its
2826
+ own class (rather than composing .fd-row/.fd-wrap utilities) because inline-flex, not
2827
+ flex, is load-bearing here — a consumer drops FilterBar into a toolbar row alongside
2828
+ other inline elements, and a flex (block-level) root would claim the full row width. */
2829
+ .fd-filterbar {
2830
+ display: inline-flex;
2831
+ flex-wrap: wrap;
2832
+ align-items: center;
2833
+ gap: var(--s-sm);
2834
+ /* MP-243: an inline-flex box's shrink-to-fit width is computed from its UNWRAPPED
2835
+ content first — flex-wrap only kicks in once something already caps the box's own
2836
+ width, which an inline-flex element does not get for free from its containing block
2837
+ the way a block-level flex does. Without this, enough chips run the bar past the
2838
+ viewport edge instead of wrapping onto a second line, at any width narrow enough to
2839
+ matter (found opening three fields' chips on a 375px viewport). */
2840
+ max-width: 100%;
2841
+ }
2842
+ /* The text field's own inline "chip that is also an input" — its editing state reuses
2843
+ .fd-tag's box but swaps in the selected/brand treatment .fd-tag[aria-pressed] already
2844
+ defines elsewhere, and the raw <input> inside is stripped of its own chrome so it reads
2845
+ as chip text you can type into, not a field dropped inside a chip. */
2846
+ .fd-filterbar-text {
2847
+ background: var(--surface-brand);
2848
+ border-color: var(--border-brand);
2849
+ cursor: text;
2850
+ }
2851
+ .fd-filterbar-text-input {
2852
+ all: unset;
2853
+ min-width: 90px;
2854
+ color: var(--text-on-surface-brand);
2855
+ }
2856
+ /* The multi-select panel's own option rows are DIVs, not buttons (MP-243: options are
2857
+ reached by arrow keys via aria-activedescendant, not by Tab), so the checked/unchecked
2858
+ indicator is a plain decorative icon rather than .fd-opt-check's "only present once
2859
+ selected" checkmark. */
2860
+ .fd-filterbar-opt-check {
2861
+ flex: none;
2862
+ color: var(--text-muted);
2863
+ font-size: 15px;
2864
+ }
2865
+ .fd-filterbar-opt-check.is-checked {
2866
+ color: var(--brand);
2867
+ }
2868
+
2824
2869
  /* ============ Range slider ============ */
2825
2870
  .fd-range {
2826
2871
  position: relative;
@@ -3175,6 +3220,11 @@
3175
3220
  * `var(--s-xs)`, the day something needs it). min-width sizes are named, not
3176
3221
  * arbitrary, so a consumer picks "sm"/"md" rather than inventing a pixel
3177
3222
  * value. */
3223
+ /* MP-243: FilterBar's own stacks (a panel's selected-count line, a tag row) needed the
3224
+ * scale's xs step — the day this comment predicted. */
3225
+ .fd-gap-xs {
3226
+ gap: var(--s-xs);
3227
+ }
3178
3228
  .fd-gap-sm {
3179
3229
  gap: var(--s-sm);
3180
3230
  }