@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 +10 -0
- package/README.md +6 -6
- package/css/actions.css +1 -0
- package/css/layover.css +4 -0
- package/dist/cardds.css +5 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/package.json +4 -1
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-
|
|
77
|
+
**เบราว์เซอร์** (เช็ก 2026-09-24): iPhone ตั้งแต่ **iOS 16.4** (มี.ค. 2023) ขึ้นไป
|
|
78
78
|
|
|
79
79
|
| เบราว์เซอร์ | ขั้นต่ำ | ออกเมื่อ | เครื่องที่ใช้ได้ |
|
|
80
80
|
|---|---|---|---|
|
|
81
|
-
| Safari / iOS |
|
|
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
|
-
|
|
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
|
|
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
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.
|
|
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
|
}
|