@iyulab/house-style 0.1.0 → 0.1.2

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
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.2] - 2026-10-06
4
+
5
+ ### Fixed
6
+
7
+ - **Plain links take the house link colour.** The theme defined `--u-link-txt-color` but only
8
+ `hs-*` classes read it, so a link without a class kept the browser's blue (`#0000EE`, and a
9
+ different blue again in dark mode). A zero-specificity `:where(a:any-link)` default now applies the
10
+ token; a class on the link and any application rule still win. The underline stays.
11
+ - **A table's totals get one separating line, not one per row.** `.hs-table tfoot td` drew a top
12
+ border on every totals row, so subtotal · tax · total read as stripes. The line is now on the first
13
+ totals row only.
14
+ - A whole card as a link (`a.hs-card`) keeps ink text and no underline, and a `.hs-views__tab`
15
+ rendered as a link has no underline — both used to take the browser's link styling.
16
+
17
+ ## [0.1.1] - 2026-10-05
18
+
19
+ ### Fixed
20
+
21
+ - **`import '@iyulab/house-style'` type-checks.** The package entry resolved straight to a `.css`
22
+ file, which TypeScript cannot read, so a project with `noUncheckedSideEffectImports` (Vite's
23
+ TypeScript templates turn it on) failed with TS2882. The entry now carries a `types` condition
24
+ pointing at an empty declaration; bundlers still load `styles/index.css`.
25
+ - The `examples/list-app` starter used the removed `color="gray"` for pending tags; it now uses
26
+ `neutral`, matching the guide.
27
+
3
28
  ## [0.1.0] - 2026-10-05
4
29
 
5
30
  First release as a package. Until now `@iyulab/house-style` was only the guide site.
package/README.md CHANGED
@@ -126,6 +126,10 @@ site; run it locally with (needs network and Playwright's Chromium):
126
126
  npm run check:start-here -w @iyulab/house-style
127
127
  ```
128
128
 
129
+ `check:start-here:local` walks the same path with this working tree's `@iyulab/house-style`
130
+ packed in place of the registry's — run it before tagging a release. The deploy workflow runs
131
+ both on every push to `main`.
132
+
129
133
  ## License
130
134
 
131
135
  MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iyulab/house-style",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "The iyulab house theme: a CSS-only theme for @iyulab components — tokens, component recipes, line-of-business layout patterns and a Tailwind CSS v4 preset — plus the guide site that documents it.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -9,8 +9,12 @@
9
9
  },
10
10
  "type": "module",
11
11
  "style": "./styles/index.css",
12
+ "types": "./styles/index.d.ts",
12
13
  "exports": {
13
- ".": "./styles/index.css",
14
+ ".": {
15
+ "types": "./styles/index.d.ts",
16
+ "default": "./styles/index.css"
17
+ },
14
18
  "./styles/*": "./styles/*",
15
19
  "./package.json": "./package.json"
16
20
  },
@@ -30,6 +34,8 @@
30
34
  "preview": "vite preview",
31
35
  "typecheck": "tsc --noEmit",
32
36
  "check:start-here": "node scripts/check-start-here.mjs",
37
+ "check:start-here:local": "node scripts/check-start-here.mjs --local",
38
+ "pretest": "node -e \"if(require('fs').existsSync('../../scripts/sibling-dist-check.js'))require('child_process').execFileSync('node',['../../scripts/sibling-dist-check.js'],{stdio:'inherit'})\"",
33
39
  "test": "node --test \"tests/*.test.mjs\""
34
40
  },
35
41
  "engines": {
@@ -53,8 +59,8 @@
53
59
  },
54
60
  "devDependencies": {
55
61
  "@iyulab/components": "^2.0.0",
56
- "@iyulab/data-components": "^0.33.0",
57
- "@iyulab/enterprise": "^0.22.0",
62
+ "@iyulab/data-components": "^0.35.0",
63
+ "@iyulab/enterprise": "^0.24.0",
58
64
  "@iyulab/modern-app": "^0.34.0",
59
65
  "@iyulab/router": "^0.19.0",
60
66
  "@iyulab/u-widgets": "^0.24.0",
@@ -21,6 +21,13 @@
21
21
  color: var(--u-txt-color);
22
22
  -webkit-font-smoothing: antialiased;
23
23
  }
24
+ /* A plain link takes the house link colour instead of the browser's — in light and dark alike.
25
+ * Zero specificity: a class on the link (`hs-*`, an app's own) and any application rule win.
26
+ * Visited links keep the same colour (an application, not a document); the underline stays,
27
+ * so a link in running text is not told apart by colour alone. */
28
+ :where(a:any-link) {
29
+ color: var(--u-link-txt-color);
30
+ }
24
31
 
25
32
  /* ── Button — 28 / 32 / 40, medium weight ─────────────────────────────── *
26
33
  * Height follows the components' own formula (1.5em line + 2 × padding + 2px border), so
@@ -0,0 +1,5 @@
1
+ // `import '@iyulab/house-style'` is a side-effect import of a stylesheet. TypeScript resolves a bare
2
+ // specifier through `exports` and cannot read `.css`, so with `noUncheckedSideEffectImports` (on in
3
+ // TypeScript 6 projects such as Vite's templates) the import fails to type-check. This empty module
4
+ // is what the `types` condition resolves to; the bundler still loads `styles/index.css`.
5
+ export {};
@@ -90,6 +90,7 @@
90
90
  font-size: 13px;
91
91
  line-height: 20px;
92
92
  color: var(--u-txt-color-weak);
93
+ text-decoration: none; /* a tab may be a link (`aria-current="page"`) */
93
94
  white-space: nowrap;
94
95
  cursor: pointer;
95
96
  }
@@ -276,9 +277,10 @@
276
277
  .hs-table tr[aria-selected='true'] td { background: var(--u-primary-bg-color); }
277
278
  .hs-table tfoot td {
278
279
  height: var(--hs-row, 40px);
279
- border-top: 1px solid var(--u-border-color);
280
280
  font-weight: 600;
281
281
  }
282
+ /* One line separates the totals from the body — not one per totals row (subtotal · tax · total). */
283
+ .hs-table tfoot tr:first-child td { border-top: 1px solid var(--u-border-color); }
282
284
  .hs-table--compact td { height: var(--hs-row-compact, 32px); }
283
285
  .hs-table--top td { vertical-align: top; padding-block: var(--u-space-sm, 8px); height: auto; }
284
286
  /* Cells (`th` too — header text aligns with its values) */
@@ -359,6 +361,8 @@ tr[aria-selected='true'] .hs-row-actions {
359
361
  .hs-card__link:hover { text-decoration: underline; }
360
362
  a.hs-card,
361
363
  .hs-card--link { cursor: pointer; transition: border-color 0.12s ease-out; }
364
+ /* A whole card as a link reads as a card: ink text, no underline — the border carries hover. */
365
+ a.hs-card { color: inherit; text-decoration: none; }
362
366
  a.hs-card:hover,
363
367
  .hs-card--link:hover { border-color: var(--u-border-color-strong); }
364
368
  @media (prefers-reduced-motion: reduce) {