@revikornmann/muka-ui 0.2.2 → 0.2.4

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.
@@ -2048,6 +2048,12 @@ body {
2048
2048
  overflow-y: auto;
2049
2049
  overflow-x: clip;
2050
2050
  z-index: 1;
2051
+
2052
+ /* Column flow so the footer (now a scroll-area child) can pin to the bottom and
2053
+ content scrolls *behind* it — letting a floating BottomBar's frosted backdrop
2054
+ reveal the content underneath. */
2055
+ display: flex;
2056
+ flex-direction: column;
2051
2057
  }
2052
2058
 
2053
2059
  /* Inner wrapper constrains content width at the large tier (enterprise desktop)
@@ -2055,6 +2061,9 @@ body {
2055
2061
  width. Full-bleed below large. */
2056
2062
  .muka-view__body-inner {
2057
2063
  width: 100%;
2064
+ /* Grow on short content so the sticky footer is pushed to the bottom rather
2065
+ than floating mid-screen. */
2066
+ flex: 1 0 auto;
2058
2067
  }
2059
2068
 
2060
2069
  @media (min-width: 1024px) {
@@ -2074,6 +2083,8 @@ body {
2074
2083
  /* ─── Footer (e.g. BottomBar) ─────────────────────────── */
2075
2084
 
2076
2085
  .muka-view__footer {
2086
+ position: sticky;
2087
+ bottom: 0;
2077
2088
  flex-shrink: 0;
2078
2089
  z-index: 2;
2079
2090
  }
@@ -6048,36 +6059,6 @@ body {
6048
6059
  }
6049
6060
 
6050
6061
 
6051
- /* NumberInput */
6052
- /* NumberInput — reuses Input field styles (../Input/Input.css). */
6053
- /* Only the prefix/suffix affixes are NumberInput-specific. */
6054
-
6055
- .muka-numberinput__addon {
6056
- display: inline-flex;
6057
- align-items: center;
6058
- flex: none;
6059
- color: var(--color-text-subtle-default);
6060
- font-family: var(--text-input-md-fontFamily);
6061
- font-size: var(--text-input-md-fontSize);
6062
- line-height: var(--text-input-md-lineHeight);
6063
- user-select: none;
6064
- pointer-events: none;
6065
- white-space: nowrap;
6066
- }
6067
-
6068
- /* Hide the native number spinners — affixes/step API replace them. */
6069
- .muka-numberinput__field .muka-input__native::-webkit-outer-spin-button,
6070
- .muka-numberinput__field .muka-input__native::-webkit-inner-spin-button {
6071
- -webkit-appearance: none;
6072
- margin: 0;
6073
- }
6074
-
6075
- .muka-numberinput__field .muka-input__native {
6076
- -moz-appearance: textfield;
6077
- appearance: textfield;
6078
- }
6079
-
6080
-
6081
6062
  /* NavigationTransition */
6082
6063
  /* NavigationTransition Component Styles */
6083
6064
 
@@ -6389,6 +6370,36 @@ body {
6389
6370
  }
6390
6371
 
6391
6372
 
6373
+ /* NumberInput */
6374
+ /* NumberInput — reuses Input field styles (../Input/Input.css). */
6375
+ /* Only the prefix/suffix affixes are NumberInput-specific. */
6376
+
6377
+ .muka-numberinput__addon {
6378
+ display: inline-flex;
6379
+ align-items: center;
6380
+ flex: none;
6381
+ color: var(--color-text-subtle-default);
6382
+ font-family: var(--text-input-md-fontFamily);
6383
+ font-size: var(--text-input-md-fontSize);
6384
+ line-height: var(--text-input-md-lineHeight);
6385
+ user-select: none;
6386
+ pointer-events: none;
6387
+ white-space: nowrap;
6388
+ }
6389
+
6390
+ /* Hide the native number spinners — affixes/step API replace them. */
6391
+ .muka-numberinput__field .muka-input__native::-webkit-outer-spin-button,
6392
+ .muka-numberinput__field .muka-input__native::-webkit-inner-spin-button {
6393
+ -webkit-appearance: none;
6394
+ margin: 0;
6395
+ }
6396
+
6397
+ .muka-numberinput__field .muka-input__native {
6398
+ -moz-appearance: textfield;
6399
+ appearance: textfield;
6400
+ }
6401
+
6402
+
6392
6403
  /* ListItem */
6393
6404
  /* ListItem Component Styles - Using Muka Design Tokens */
6394
6405
 
@@ -8546,50 +8557,6 @@ li.muka-listitem {
8546
8557
  }
8547
8558
 
8548
8559
 
8549
- /* DataPieChart */
8550
- /* DataPieChart Component Styles - Using Muka Design Tokens */
8551
-
8552
- .muka-data-pie-chart {
8553
- position: relative;
8554
- display: inline-flex;
8555
- align-items: center;
8556
- justify-content: center;
8557
- flex-shrink: 0;
8558
- }
8559
-
8560
- .muka-data-pie-chart__svg {
8561
- display: block;
8562
- width: 100%;
8563
- height: 100%;
8564
- /* Start the segment at 12 o'clock instead of 3 o'clock */
8565
- transform: rotate(-90deg);
8566
- }
8567
-
8568
- .muka-data-pie-chart__track {
8569
- fill: none;
8570
- }
8571
-
8572
- .muka-data-pie-chart__segment {
8573
- fill: none;
8574
- /* Subtle lift on the filled segment, matching the Figma elevation */
8575
- filter: drop-shadow(0 2px 4px var(--color-black-alpha-5, rgba(0, 0, 0, 0.05)));
8576
- transition: stroke-dasharray 0.3s ease;
8577
- }
8578
-
8579
- .muka-data-pie-chart__value {
8580
- position: absolute;
8581
- inset: 0;
8582
- display: flex;
8583
- align-items: center;
8584
- justify-content: center;
8585
- font-family: var(--text-body-base-bold-fontFamily);
8586
- font-weight: var(--text-body-base-bold-fontWeight);
8587
- font-size: var(--text-body-base-bold-fontSize);
8588
- line-height: var(--text-body-base-bold-lineHeight);
8589
- color: var(--color-text-default-default);
8590
- }
8591
-
8592
-
8593
8560
  /* DataTable */
8594
8561
  /* DataTable Component Styles - Using Muka Design Tokens */
8595
8562
 
@@ -8758,6 +8725,50 @@ li.muka-listitem {
8758
8725
  }
8759
8726
 
8760
8727
 
8728
+ /* DataPieChart */
8729
+ /* DataPieChart Component Styles - Using Muka Design Tokens */
8730
+
8731
+ .muka-data-pie-chart {
8732
+ position: relative;
8733
+ display: inline-flex;
8734
+ align-items: center;
8735
+ justify-content: center;
8736
+ flex-shrink: 0;
8737
+ }
8738
+
8739
+ .muka-data-pie-chart__svg {
8740
+ display: block;
8741
+ width: 100%;
8742
+ height: 100%;
8743
+ /* Start the segment at 12 o'clock instead of 3 o'clock */
8744
+ transform: rotate(-90deg);
8745
+ }
8746
+
8747
+ .muka-data-pie-chart__track {
8748
+ fill: none;
8749
+ }
8750
+
8751
+ .muka-data-pie-chart__segment {
8752
+ fill: none;
8753
+ /* Subtle lift on the filled segment, matching the Figma elevation */
8754
+ filter: drop-shadow(0 2px 4px var(--color-black-alpha-5, rgba(0, 0, 0, 0.05)));
8755
+ transition: stroke-dasharray 0.3s ease;
8756
+ }
8757
+
8758
+ .muka-data-pie-chart__value {
8759
+ position: absolute;
8760
+ inset: 0;
8761
+ display: flex;
8762
+ align-items: center;
8763
+ justify-content: center;
8764
+ font-family: var(--text-body-base-bold-fontFamily);
8765
+ font-weight: var(--text-body-base-bold-fontWeight);
8766
+ font-size: var(--text-body-base-bold-fontSize);
8767
+ line-height: var(--text-body-base-bold-lineHeight);
8768
+ color: var(--color-text-default-default);
8769
+ }
8770
+
8771
+
8761
8772
  /* Container */
8762
8773
  /* Container Component - Layout tokens (container.max-width, container.gap) */
8763
8774
 
@@ -10405,6 +10416,15 @@ li.muka-listitem {
10405
10416
  backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
10406
10417
  -webkit-backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
10407
10418
  padding: var(--bottombar-floating-padding-top) var(--bottombar-floating-margin-x) var(--bottombar-floating-margin-bottom);
10419
+
10420
+ /* The transparent frosted margin around the pill overlays scrolling content;
10421
+ let scroll/taps fall through to that content, keeping only the pill itself
10422
+ interactive (re-enabled on __content below). */
10423
+ pointer-events: none;
10424
+ }
10425
+
10426
+ .muka-bottombar--floating .muka-bottombar__content {
10427
+ pointer-events: auto;
10408
10428
  }
10409
10429
 
10410
10430
  .muka-bottombar--floating .muka-bottombar__content {
@@ -2048,6 +2048,12 @@ body {
2048
2048
  overflow-y: auto;
2049
2049
  overflow-x: clip;
2050
2050
  z-index: 1;
2051
+
2052
+ /* Column flow so the footer (now a scroll-area child) can pin to the bottom and
2053
+ content scrolls *behind* it — letting a floating BottomBar's frosted backdrop
2054
+ reveal the content underneath. */
2055
+ display: flex;
2056
+ flex-direction: column;
2051
2057
  }
2052
2058
 
2053
2059
  /* Inner wrapper constrains content width at the large tier (enterprise desktop)
@@ -2055,6 +2061,9 @@ body {
2055
2061
  width. Full-bleed below large. */
2056
2062
  .muka-view__body-inner {
2057
2063
  width: 100%;
2064
+ /* Grow on short content so the sticky footer is pushed to the bottom rather
2065
+ than floating mid-screen. */
2066
+ flex: 1 0 auto;
2058
2067
  }
2059
2068
 
2060
2069
  @media (min-width: 1024px) {
@@ -2074,6 +2083,8 @@ body {
2074
2083
  /* ─── Footer (e.g. BottomBar) ─────────────────────────── */
2075
2084
 
2076
2085
  .muka-view__footer {
2086
+ position: sticky;
2087
+ bottom: 0;
2077
2088
  flex-shrink: 0;
2078
2089
  z-index: 2;
2079
2090
  }
@@ -6048,36 +6059,6 @@ body {
6048
6059
  }
6049
6060
 
6050
6061
 
6051
- /* NumberInput */
6052
- /* NumberInput — reuses Input field styles (../Input/Input.css). */
6053
- /* Only the prefix/suffix affixes are NumberInput-specific. */
6054
-
6055
- .muka-numberinput__addon {
6056
- display: inline-flex;
6057
- align-items: center;
6058
- flex: none;
6059
- color: var(--color-text-subtle-default);
6060
- font-family: var(--text-input-md-fontFamily);
6061
- font-size: var(--text-input-md-fontSize);
6062
- line-height: var(--text-input-md-lineHeight);
6063
- user-select: none;
6064
- pointer-events: none;
6065
- white-space: nowrap;
6066
- }
6067
-
6068
- /* Hide the native number spinners — affixes/step API replace them. */
6069
- .muka-numberinput__field .muka-input__native::-webkit-outer-spin-button,
6070
- .muka-numberinput__field .muka-input__native::-webkit-inner-spin-button {
6071
- -webkit-appearance: none;
6072
- margin: 0;
6073
- }
6074
-
6075
- .muka-numberinput__field .muka-input__native {
6076
- -moz-appearance: textfield;
6077
- appearance: textfield;
6078
- }
6079
-
6080
-
6081
6062
  /* NavigationTransition */
6082
6063
  /* NavigationTransition Component Styles */
6083
6064
 
@@ -6389,6 +6370,36 @@ body {
6389
6370
  }
6390
6371
 
6391
6372
 
6373
+ /* NumberInput */
6374
+ /* NumberInput — reuses Input field styles (../Input/Input.css). */
6375
+ /* Only the prefix/suffix affixes are NumberInput-specific. */
6376
+
6377
+ .muka-numberinput__addon {
6378
+ display: inline-flex;
6379
+ align-items: center;
6380
+ flex: none;
6381
+ color: var(--color-text-subtle-default);
6382
+ font-family: var(--text-input-md-fontFamily);
6383
+ font-size: var(--text-input-md-fontSize);
6384
+ line-height: var(--text-input-md-lineHeight);
6385
+ user-select: none;
6386
+ pointer-events: none;
6387
+ white-space: nowrap;
6388
+ }
6389
+
6390
+ /* Hide the native number spinners — affixes/step API replace them. */
6391
+ .muka-numberinput__field .muka-input__native::-webkit-outer-spin-button,
6392
+ .muka-numberinput__field .muka-input__native::-webkit-inner-spin-button {
6393
+ -webkit-appearance: none;
6394
+ margin: 0;
6395
+ }
6396
+
6397
+ .muka-numberinput__field .muka-input__native {
6398
+ -moz-appearance: textfield;
6399
+ appearance: textfield;
6400
+ }
6401
+
6402
+
6392
6403
  /* ListItem */
6393
6404
  /* ListItem Component Styles - Using Muka Design Tokens */
6394
6405
 
@@ -8546,50 +8557,6 @@ li.muka-listitem {
8546
8557
  }
8547
8558
 
8548
8559
 
8549
- /* DataPieChart */
8550
- /* DataPieChart Component Styles - Using Muka Design Tokens */
8551
-
8552
- .muka-data-pie-chart {
8553
- position: relative;
8554
- display: inline-flex;
8555
- align-items: center;
8556
- justify-content: center;
8557
- flex-shrink: 0;
8558
- }
8559
-
8560
- .muka-data-pie-chart__svg {
8561
- display: block;
8562
- width: 100%;
8563
- height: 100%;
8564
- /* Start the segment at 12 o'clock instead of 3 o'clock */
8565
- transform: rotate(-90deg);
8566
- }
8567
-
8568
- .muka-data-pie-chart__track {
8569
- fill: none;
8570
- }
8571
-
8572
- .muka-data-pie-chart__segment {
8573
- fill: none;
8574
- /* Subtle lift on the filled segment, matching the Figma elevation */
8575
- filter: drop-shadow(0 2px 4px var(--color-black-alpha-5, rgba(0, 0, 0, 0.05)));
8576
- transition: stroke-dasharray 0.3s ease;
8577
- }
8578
-
8579
- .muka-data-pie-chart__value {
8580
- position: absolute;
8581
- inset: 0;
8582
- display: flex;
8583
- align-items: center;
8584
- justify-content: center;
8585
- font-family: var(--text-body-base-bold-fontFamily);
8586
- font-weight: var(--text-body-base-bold-fontWeight);
8587
- font-size: var(--text-body-base-bold-fontSize);
8588
- line-height: var(--text-body-base-bold-lineHeight);
8589
- color: var(--color-text-default-default);
8590
- }
8591
-
8592
-
8593
8560
  /* DataTable */
8594
8561
  /* DataTable Component Styles - Using Muka Design Tokens */
8595
8562
 
@@ -8758,6 +8725,50 @@ li.muka-listitem {
8758
8725
  }
8759
8726
 
8760
8727
 
8728
+ /* DataPieChart */
8729
+ /* DataPieChart Component Styles - Using Muka Design Tokens */
8730
+
8731
+ .muka-data-pie-chart {
8732
+ position: relative;
8733
+ display: inline-flex;
8734
+ align-items: center;
8735
+ justify-content: center;
8736
+ flex-shrink: 0;
8737
+ }
8738
+
8739
+ .muka-data-pie-chart__svg {
8740
+ display: block;
8741
+ width: 100%;
8742
+ height: 100%;
8743
+ /* Start the segment at 12 o'clock instead of 3 o'clock */
8744
+ transform: rotate(-90deg);
8745
+ }
8746
+
8747
+ .muka-data-pie-chart__track {
8748
+ fill: none;
8749
+ }
8750
+
8751
+ .muka-data-pie-chart__segment {
8752
+ fill: none;
8753
+ /* Subtle lift on the filled segment, matching the Figma elevation */
8754
+ filter: drop-shadow(0 2px 4px var(--color-black-alpha-5, rgba(0, 0, 0, 0.05)));
8755
+ transition: stroke-dasharray 0.3s ease;
8756
+ }
8757
+
8758
+ .muka-data-pie-chart__value {
8759
+ position: absolute;
8760
+ inset: 0;
8761
+ display: flex;
8762
+ align-items: center;
8763
+ justify-content: center;
8764
+ font-family: var(--text-body-base-bold-fontFamily);
8765
+ font-weight: var(--text-body-base-bold-fontWeight);
8766
+ font-size: var(--text-body-base-bold-fontSize);
8767
+ line-height: var(--text-body-base-bold-lineHeight);
8768
+ color: var(--color-text-default-default);
8769
+ }
8770
+
8771
+
8761
8772
  /* Container */
8762
8773
  /* Container Component - Layout tokens (container.max-width, container.gap) */
8763
8774
 
@@ -10405,6 +10416,15 @@ li.muka-listitem {
10405
10416
  backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
10406
10417
  -webkit-backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
10407
10418
  padding: var(--bottombar-floating-padding-top) var(--bottombar-floating-margin-x) var(--bottombar-floating-margin-bottom);
10419
+
10420
+ /* The transparent frosted margin around the pill overlays scrolling content;
10421
+ let scroll/taps fall through to that content, keeping only the pill itself
10422
+ interactive (re-enabled on __content below). */
10423
+ pointer-events: none;
10424
+ }
10425
+
10426
+ .muka-bottombar--floating .muka-bottombar__content {
10427
+ pointer-events: auto;
10408
10428
  }
10409
10429
 
10410
10430
  .muka-bottombar--floating .muka-bottombar__content {
@@ -1 +1 @@
1
- {"version":3,"file":"TopBar.d.ts","sourceRoot":"","sources":["../../../../components/TopBar/TopBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+CAA+C;IAC/C,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEpC,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAElC;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B,mDAAmD;IACnD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAmExC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"TopBar.d.ts","sourceRoot":"","sources":["../../../../components/TopBar/TopBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+CAA+C;IAC/C,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEpC,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAElC;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B,mDAAmD;IACnD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAqExC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -47,6 +47,17 @@ This workflow listens for the `muka-released` dispatch and installs the exact
47
47
  published version. You can also run it manually from the Actions tab
48
48
  (installs `@latest`). The package is public, so it needs no secrets to install.
49
49
 
50
+ The workflow auto-detects your package manager from the lockfile
51
+ (`pnpm-lock.yaml` → pnpm, `yarn.lock` → yarn, else npm) and installs with it.
52
+
53
+ > **pnpm / yarn consumers:** pin your package manager with a `packageManager`
54
+ > field in `package.json`, e.g. `"packageManager": "pnpm@9.15.9"`. CI uses
55
+ > [corepack](https://nodejs.org/api/corepack.html), which otherwise downloads
56
+ > the *latest* pnpm/yarn — a newer major than your lockfile, which can fail the
57
+ > update (Node-version mismatches, or pnpm's `minimumReleaseAge` default
58
+ > rejecting a just-published version). Match the value to the pnpm/yarn version
59
+ > you use locally (e.g. `lockfileVersion: 9.0` → pnpm 9).
60
+
50
61
  ## 3. Register as a consumer
51
62
 
52
63
  Add `owner/repo` to Muka's [`.github/consumers.txt`](../../.github/consumers.txt)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revikornmann/muka-ui",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Muka Design System - Multi-brand design tokens and React components",
5
5
  "main": "dist/cjs/components/index.js",
6
6
  "module": "dist/esm/components/index.js",
@@ -72,7 +72,15 @@ cp node_modules/@revikornmann/muka-ui/templates/update-muka.yml \
72
72
 
73
73
  The workflow listens for the `muka-released` dispatch and installs the exact
74
74
  published version (manual runs install `@latest`). No secrets needed — the
75
- package is public.
75
+ package is public. It auto-detects the package manager from the lockfile
76
+ (pnpm/yarn/npm).
77
+
78
+ **If this is a pnpm or yarn repo**, ensure `package.json` has a `packageManager`
79
+ field pinning your version (e.g. `"packageManager": "pnpm@9.15.9"` — match the
80
+ lockfile, `lockfileVersion: 9.0` → pnpm 9). Without it, CI's corepack pulls the
81
+ *latest* pnpm/yarn, which can fail the update (Node-version mismatch, or pnpm's
82
+ `minimumReleaseAge` default rejecting a just-published version). Add it if
83
+ missing.
76
84
 
77
85
  ## Step 4: Register this repo as a consumer
78
86
 
@@ -43,7 +43,8 @@ jobs:
43
43
  - name: Setup Node.js
44
44
  uses: actions/setup-node@v4
45
45
  with:
46
- node-version: '20'
46
+ # Node 22 LTS: current pnpm/yarn (via corepack) require Node >= 22.13.
47
+ node-version: '22'
47
48
 
48
49
  - name: Enable corepack (pnpm / yarn shims)
49
50
  run: corepack enable