@usableapp/cardds 0.6.15 → 0.6.16

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/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  > For: a project that consumes `@usableapp/cardds` and its AI — what changed between versions, written as before → after, so a screen can be brought up to date without reading the source. Newest first. A consumer never edits cardds; if something here leaves you without a way to do what you did before, report the gap.
4
4
 
5
+ ## 0.6.16 — 2026-09-24
6
+
7
+ ### iOS 16.4 supported (was 18.3)
8
+ - Before: on iOS 16 no Menu or Dropdown opened (the popover API arrived in Safari 17). After: cardds ships
9
+ `@oddbird/popover-polyfill` (a dependency, loaded by the package, active only where popover is missing) and CSS for the
10
+ polyfill's open state. The floor is **iOS 16.4**: under it `@property` / `color-mix()` are missing and the sheet's room
11
+ and the derived colours go wrong.
12
+ - A project that checks the browser before starting: DROP the `'popover' in HTMLElement.prototype` check — it fails on
13
+ iOS 16.4–16.x, which now works. Keep `@property`, `color-mix()`, container queries, `:has()` (README "เบราว์เซอร์").
14
+
5
15
  ## 0.6.15 — 2026-09-24
6
16
 
7
17
  - **`ActionNote` icon colour:** new knob `--action-note-icon-ink` (default: the words' muted ink). A project can colour the
package/README.md CHANGED
@@ -74,15 +74,16 @@ import '@usableapp/cardds/dist/cardds.css'; // the CSS, fonts resolve from the
74
74
  ```
75
75
 
76
76
 
77
- **เบราว์เซอร์** (เช็ก 2026-09-23): ใช้ได้กับเบราว์เซอร์ตั้งแต่**ต้นปี 2025** ขึ้นไป
77
+ **เบราว์เซอร์** (เช็ก 2026-09-24): iPhone ตั้งแต่ **iOS 16.4** (มี.ค. 2023) ขึ้นไป
78
78
 
79
79
  | เบราว์เซอร์ | ขั้นต่ำ | ออกเมื่อ | เครื่องที่ใช้ได้ |
80
80
  |---|---|---|---|
81
- | Safari / iOS | 18.3 | ม.ค. 2025 | iPhone XS / XR (2018) ขึ้นไป ที่อัปเดตแล้ว |
81
+ | Safari / iOS | 16.4 | มี.ค. 2023 | iPhone 8 / X (2017) ขึ้นไป ที่อัปเดตแล้ว |
82
82
  | Chrome | 114 | พ.ค. 2023 | Android ส่วนใหญ่ที่ Chrome อัปเดตอยู่ |
83
83
  | Firefox | 128 | ก.ค. 2024 | — |
84
84
 
85
- เก่ากว่านี้: เมนูและ dropdown เปิดไม่ได้ ส่วนเบราว์เซอร์ที่ผ่านขั้นต่ำแต่ยังไม่ใช่รุ่นล่าสุด
85
+ iOS 16.4–16.x ไม่มี popover ในตัว — cardds ใส่ `@oddbird/popover-polyfill` มาให้ (ทำงานเฉพาะเครื่องที่ไม่มี)
86
+ เก่ากว่า 16.4: ระยะของ sheet และสีเพี้ยน (`@property`, `color-mix()`) ส่วนเบราว์เซอร์ที่ผ่านขั้นต่ำแต่ยังไม่ใช่รุ่นล่าสุด
86
87
  เมนูจะขึ้นกลางจอแทนที่จะอยู่ใต้ปุ่ม
87
88
 
88
89
  สำหรับโปรเจกต์ที่อยากเช็กเบราว์เซอร์ก่อนเริ่ม (เช่นหน้าติดตั้ง): เช็กเฉพาะฟีเจอร์ที่**จำเป็น**
@@ -90,14 +91,13 @@ import '@usableapp/cardds/dist/cardds.css'; // the CSS, fonts resolve from the
90
91
 
91
92
  | จำเป็น: ไม่มีแล้วหน้าจอพัง | วิธีเช็ก |
92
93
  |---|---|
93
- | popover | `'popover' in HTMLElement.prototype` |
94
94
  | `@property` | `'registerProperty' in CSS` |
95
95
  | `color-mix()` | `CSS.supports('color', 'color-mix(in srgb, red, blue)')` |
96
96
  | container queries | `CSS.supports('container-type: size') && CSS.supports('height: 1cqh')` |
97
97
  | `:has()` | `CSS.supports('selector(:has(a))')` |
98
98
 
99
- มีตัวสำรองแล้ว ไม่ต้องเช็ก: anchor positioning, view transitions, `@starting-style`, `text-wrap`
100
- iOS 17–18.2 เช็กผ่าน แต่ยังรองรับไม่เต็ม เมนูอาจแสดงผิดเล็กน้อย
99
+ มีตัวสำรองแล้ว ไม่ต้องเช็ก: popover (polyfill), anchor positioning, view transitions, `@starting-style`, `text-wrap`
100
+ iOS 16.4–18.2 เช็กผ่าน แต่ยังรองรับไม่เต็ม เมนูขึ้นกลางจอแทนใต้ปุ่ม
101
101
 
102
102
  Working with Claude in another project? The `/cardds` skill
103
103
  (`~/.claude/skills/cardds/`) carries the install and the contract, and points
package/css/actions.css CHANGED
@@ -190,6 +190,7 @@
190
190
  .dropdown__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
191
191
  .dropdown__btn > .icon { transition: rotate 0.2s ease; }
192
192
  .dropdown:has(.menu:popover-open) .dropdown__btn > .icon { rotate: 180deg; }
193
+ .dropdown:has(.menu.\:popover-open) .dropdown__btn > .icon { rotate: 180deg; } /* the polyfill's open (layover.css) */
193
194
  .dropdown--end .menu[popover] { position-area: block-end span-inline-start; } /* right-aligned trigger: panel grows leftwards (= .menu--end, layover.css) */
194
195
  .filter-row { display: flex; gap: var(--sp-2); }
195
196
  .filter-row > .dropdown { flex: 1; min-width: 0; }
package/css/layover.css CHANGED
@@ -123,6 +123,9 @@
123
123
  box-shadow: var(--menu-shadow, var(--shadow-float));
124
124
  }
125
125
  .menu:popover-open { display: grid; }
126
+ /* iOS 16.4–16.x has no popover: @oddbird/popover-polyfill (src/index.ts) marks an open one with the
127
+ class `:popover-open`. Its own rule — an unknown pseudo-class would drop the whole selector list. */
128
+ .menu.\:popover-open { display: grid; }
126
129
  .menu:not([popover]) { display: grid; position: relative; } /* inline usage (no attribute) */
127
130
  .menu__item {
128
131
  display: flex;
@@ -159,6 +162,7 @@
159
162
  transition: display 0.2s allow-discrete, overlay 0.2s allow-discrete, opacity 0.2s, translate 0.2s;
160
163
  }
161
164
  .menu:popover-open { opacity: 1; translate: 0 0; }
165
+ .menu.\:popover-open { opacity: 1; translate: 0 0; }
162
166
  @starting-style { .menu:popover-open { opacity: 0; translate: 0 calc(-1 * var(--sp-2)); } }
163
167
  }
164
168
 
package/dist/cardds.css CHANGED
@@ -2022,6 +2022,7 @@ button { font: inherit; cursor: pointer; }
2022
2022
  .dropdown__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2023
2023
  .dropdown__btn > .icon { transition: rotate 0.2s ease; }
2024
2024
  .dropdown:has(.menu:popover-open) .dropdown__btn > .icon { rotate: 180deg; }
2025
+ .dropdown:has(.menu.\:popover-open) .dropdown__btn > .icon { rotate: 180deg; } /* the polyfill's open (layover.css) */
2025
2026
  .dropdown--end .menu[popover] { position-area: block-end span-inline-start; } /* right-aligned trigger: panel grows leftwards (= .menu--end, layover.css) */
2026
2027
  .filter-row { display: flex; gap: var(--sp-2); }
2027
2028
  .filter-row > .dropdown { flex: 1; min-width: 0; }
@@ -3467,6 +3468,9 @@ button { font: inherit; cursor: pointer; }
3467
3468
  box-shadow: var(--menu-shadow, var(--shadow-float));
3468
3469
  }
3469
3470
  .menu:popover-open { display: grid; }
3471
+ /* iOS 16.4–16.x has no popover: @oddbird/popover-polyfill (src/index.ts) marks an open one with the
3472
+ class `:popover-open`. Its own rule — an unknown pseudo-class would drop the whole selector list. */
3473
+ .menu.\:popover-open { display: grid; }
3470
3474
  .menu:not([popover]) { display: grid; position: relative; } /* inline usage (no attribute) */
3471
3475
  .menu__item {
3472
3476
  display: flex;
@@ -3503,6 +3507,7 @@ button { font: inherit; cursor: pointer; }
3503
3507
  transition: display 0.2s allow-discrete, overlay 0.2s allow-discrete, opacity 0.2s, translate 0.2s;
3504
3508
  }
3505
3509
  .menu:popover-open { opacity: 1; translate: 0 0; }
3510
+ .menu.\:popover-open { opacity: 1; translate: 0 0; }
3506
3511
  @starting-style { .menu:popover-open { opacity: 0; translate: 0 calc(-1 * var(--sp-2)); } }
3507
3512
  }
3508
3513
 
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import '../cardds.js';
2
+ import '@oddbird/popover-polyfill';
2
3
  export { cx } from './cx.js';
3
4
  export * from './type/Icon.js';
4
5
  export { ICON_NAMES } from './type/icons.js';
package/dist/index.js CHANGED
@@ -2,6 +2,8 @@
2
2
  // markup contract the CSS documents, nothing more. cardds.js rides along for
3
3
  // the behaviours (sheet handle, stack open/close, dropdown value sync).
4
4
  import '../cardds.js';
5
+ // Popover for Safari/iOS 16.4–16.x (native from 17): applies itself only where the platform lacks it.
6
+ import '@oddbird/popover-polyfill';
5
7
  export { cx } from './cx.js';
6
8
  export * from './type/Icon.js';
7
9
  export { ICON_NAMES } from './type/icons.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usableapp/cardds",
3
- "version": "0.6.15",
3
+ "version": "0.6.16",
4
4
  "license": "UNLICENSED",
5
5
  "type": "module",
6
6
  "description": "card-first mobile design system, React-first: the components in src/ are thin wrappers over the CSS contract (css/*.css stays the only truth); gallery/ shows every story live (npm run dev), tests/ measures the geometry.",
@@ -57,5 +57,8 @@
57
57
  },
58
58
  "publishConfig": {
59
59
  "access": "public"
60
+ },
61
+ "dependencies": {
62
+ "@oddbird/popover-polyfill": "^0.7.2"
60
63
  }
61
64
  }