@iyulab/house-style 0.3.0 → 0.4.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/CHANGELOG.md +39 -0
- package/package.json +6 -6
- package/styles/components.css +11 -0
- package/styles/patterns.css +31 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.4.0] - 2026-10-14
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `<kbd>` outside a component takes the keyboard-hint look (border, canvas background, overline size).
|
|
8
|
+
- `.hs-table-toolbar__actions` — the action group at the end of a table toolbar.
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Requires `@iyulab/components` 2.24.0 or later (peer range `^2.24.0`). The house sets the selection role
|
|
13
|
+
(`--u-selection-color`), which components reads from 2.24.0 — with an older components a checked box, a selected
|
|
14
|
+
radio and an on switch keep the primary colour.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Deprecated
|
|
18
|
+
|
|
19
|
+
- **`.hs-page-head` and its parts (`__eyebrow` · `__title` · `__description` · `__actions`) — use `u-page-header`**
|
|
20
|
+
from `@iyulab/modern-app`. The house already draws that component the same way (label-size eyebrow and
|
|
21
|
+
description, display-size title), and it carries the page's `h1`, a back link and a status slot the class pattern
|
|
22
|
+
does not. Move the eyebrow, title and description to its `eyebrow`, `title` and `subtitle` attributes and put each
|
|
23
|
+
scope picker and action in `slot="actions"`. Removed in 0.5.0.
|
|
24
|
+
- **`.hs-kbd` — use a plain `<kbd>`.** The house now draws `<kbd>` as the same small outlined cap, in the monospace
|
|
25
|
+
face. Removed in 0.5.0.
|
|
26
|
+
- **`.hs-stats` / `.hs-stat` and its parts — use `u-info-section layout="strip"`** with `u-info-field size="lg"`
|
|
27
|
+
(`@iyulab/modern-app` 0.54): `__label` → `label`, `__value` → `value`, `__unit` → `unit`, `__sub` → `description`,
|
|
28
|
+
`--warning` / `--danger` / `--success` → `tone="warning"` / `"negative"` / `"positive"`. The same strip — one surface,
|
|
29
|
+
hairline dividers, all side by side or all stacked below 640px. `.hs-stat--hero` has no counterpart (nothing used it)
|
|
30
|
+
and goes with it. Removed in 0.5.0.
|
|
31
|
+
- **`.hs-sheet-footer` and its parts — use `<u-action-bar sticky>`** (`@iyulab/modern-app` 0.54): the change summary in
|
|
32
|
+
`slot="summary"`, Cancel and Save as its children, the sheet's inset as `--action-bar-padding-inline`. It also keeps
|
|
33
|
+
a destructive action apart at the leading edge and puts the main actions on top when narrow. Removed in 0.5.0.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- `.hs-views` no longer draws a vertical scrollbar beside its tabs. The selected tab's underline reached 1px
|
|
38
|
+
past the scrolling strip (a `-1px` margin over the strip's bottom border); the base line is now an inset shadow the
|
|
39
|
+
underline paints over.
|
|
40
|
+
- `.hs-table--compact` totals rows take the compact height too. `.hs-table tfoot td` set 40px with a higher
|
|
41
|
+
specificity, so a compact table's subtotal, tax and total rows stood taller than its body rows.
|
|
3
42
|
## [0.3.0] - 2026-10-13
|
|
4
43
|
|
|
5
44
|
### Changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iyulab/house-style",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
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": {
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"pretendard": "^1.3.9"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|
|
61
|
-
"@iyulab/components": "^2.
|
|
61
|
+
"@iyulab/components": "^2.24.0",
|
|
62
62
|
"@iyulab/flex-table": ">=0.41.0",
|
|
63
63
|
"@iyulab/modern-app": ">=0.39.0"
|
|
64
64
|
},
|
|
@@ -71,11 +71,11 @@
|
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
|
-
"@iyulab/components": "^2.
|
|
75
|
-
"@iyulab/data-components": "^0.
|
|
74
|
+
"@iyulab/components": "^2.24.0",
|
|
75
|
+
"@iyulab/data-components": "^0.49.0",
|
|
76
76
|
"@iyulab/enterprise": "^0.32.0",
|
|
77
|
-
"@iyulab/flex-table": "^0.
|
|
78
|
-
"@iyulab/modern-app": "^0.
|
|
77
|
+
"@iyulab/flex-table": "^0.67.0",
|
|
78
|
+
"@iyulab/modern-app": "^0.54.0",
|
|
79
79
|
"@iyulab/router": "^0.24.0",
|
|
80
80
|
"@iyulab/u-widgets": "^0.31.0",
|
|
81
81
|
"@lit/react": "^1.0.8",
|
package/styles/components.css
CHANGED
|
@@ -64,6 +64,17 @@
|
|
|
64
64
|
:where(code, kbd, samp, pre) {
|
|
65
65
|
font-family: var(--u-font-mono);
|
|
66
66
|
}
|
|
67
|
+
/* A key the reader presses — a small outlined cap, quieter than the text around it. */
|
|
68
|
+
:where(kbd) {
|
|
69
|
+
padding: 0 4px;
|
|
70
|
+
border: 1px solid var(--u-border-color);
|
|
71
|
+
border-radius: var(--u-radius-md, 4px);
|
|
72
|
+
background: var(--u-canvas-bg-color);
|
|
73
|
+
font-size: var(--u-text-overline-size, 11px);
|
|
74
|
+
font-weight: 500;
|
|
75
|
+
line-height: 16px;
|
|
76
|
+
color: var(--u-txt-color-weak);
|
|
77
|
+
}
|
|
67
78
|
/* A measure for running text — opt in where a paragraph can be wider than reads well. */
|
|
68
79
|
:where(.hs-prose) :where(p, ul, ol, dl, blockquote) {
|
|
69
80
|
max-inline-size: var(--hs-measure);
|
package/styles/patterns.css
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* Prefix `hs-`. Everything sits in `@layer iyu.house`; an application rule always wins.
|
|
10
10
|
*
|
|
11
11
|
* Screen recipes (the guide shows each one):
|
|
12
|
-
* list =
|
|
13
|
-
* detail = side sheet: head (id · status · one primary action) → steps →
|
|
14
|
-
* edit = side sheet with .hs-fieldset sections and a pinned
|
|
12
|
+
* list = u-page-header → .hs-filter-bar → u-info-section layout="strip" → .hs-table-card (toolbar · table · pager)
|
|
13
|
+
* detail = side sheet: head (id · status · one primary action) → steps → stat strip → tabs → cards
|
|
14
|
+
* edit = side sheet with .hs-fieldset sections and a pinned u-action-bar (summary slot)
|
|
15
15
|
*
|
|
16
16
|
* Rules the patterns encode:
|
|
17
17
|
* · one ink (primary) button per view — the rest are outlined, plain or in a menu
|
|
@@ -35,7 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
/* Page head — eyebrow · title · one-line description on the left; on the right a scope
|
|
37
37
|
picker (data-wide filters such as a season or period), up to two secondary actions and
|
|
38
|
-
the single primary action, in that order.
|
|
38
|
+
the single primary action, in that order.
|
|
39
|
+
@deprecated Use `u-page-header` (`@iyulab/modern-app`) — `eyebrow` · `title` · `subtitle`, and the
|
|
40
|
+
scope picker and actions in its `actions` slot. The house already draws it this way
|
|
41
|
+
(`components.css`), and it carries the page's h1 and a back link. remove: 0.5.0 */
|
|
39
42
|
.hs-page-head {
|
|
40
43
|
display: flex;
|
|
41
44
|
align-items: flex-end;
|
|
@@ -74,7 +77,10 @@
|
|
|
74
77
|
.hs-views {
|
|
75
78
|
display: flex;
|
|
76
79
|
gap: var(--u-space-2xs, 4px);
|
|
77
|
-
border
|
|
80
|
+
/* The base line is an inset shadow, not a border: a tab's 2px underline paints over it without the tab
|
|
81
|
+
reaching past the box — with a border and a -1px tab margin the scroll container overflowed by 1px and
|
|
82
|
+
drew a vertical scrollbar beside the tabs. */
|
|
83
|
+
box-shadow: inset 0 -1px 0 var(--u-border-color);
|
|
78
84
|
overflow-x: auto;
|
|
79
85
|
}
|
|
80
86
|
.hs-views__tab {
|
|
@@ -82,7 +88,6 @@
|
|
|
82
88
|
align-items: center;
|
|
83
89
|
gap: 6px;
|
|
84
90
|
padding: var(--u-space-sm, 8px) var(--u-space-md, 12px);
|
|
85
|
-
margin-bottom: -1px;
|
|
86
91
|
border: 0;
|
|
87
92
|
border-bottom: 2px solid transparent;
|
|
88
93
|
background: none;
|
|
@@ -150,7 +155,10 @@
|
|
|
150
155
|
/* Side by side, or stacked when the strip is narrower than 640px — all or nothing, never a ragged row.
|
|
151
156
|
* No size container: the threshold is each stat's flex-basis, calc((640px - 100%) * 999) — negative
|
|
152
157
|
* (so 0) when wide, huge when narrow (the "Holy Albatross"). The dividers are the 1px gap showing the
|
|
153
|
-
* strip's border-coloured background, so they turn from vertical to horizontal on their own.
|
|
158
|
+
* strip's border-coloured background, so they turn from vertical to horizontal on their own.
|
|
159
|
+
* @deprecated Use `u-info-section layout="strip"` with `u-info-field size="lg"` (`@iyulab/modern-app` 0.54) — the
|
|
160
|
+
* same strip as a component: `label` · `value` · `unit` · `description` (the supporting line) and `tone` for the
|
|
161
|
+
* warning, danger and success values. `.hs-stat--hero` has no counterpart and goes with it. remove: 0.5.0 */
|
|
154
162
|
.hs-stats {
|
|
155
163
|
display: flex;
|
|
156
164
|
flex-wrap: wrap;
|
|
@@ -233,6 +241,12 @@
|
|
|
233
241
|
font-size: var(--hs-text-dense-size, 13px);
|
|
234
242
|
font-weight: 600;
|
|
235
243
|
}
|
|
244
|
+
.hs-table-toolbar__actions {
|
|
245
|
+
display: flex;
|
|
246
|
+
align-items: center;
|
|
247
|
+
gap: var(--u-space-sm, 8px);
|
|
248
|
+
flex-wrap: wrap;
|
|
249
|
+
}
|
|
236
250
|
.hs-pager {
|
|
237
251
|
display: flex;
|
|
238
252
|
align-items: center;
|
|
@@ -279,7 +293,9 @@
|
|
|
279
293
|
}
|
|
280
294
|
/* One line separates the totals from the body — not one per totals row (subtotal · tax · total). */
|
|
281
295
|
.hs-table tfoot tr:first-child td { border-top: 1px solid var(--u-border-color); }
|
|
282
|
-
|
|
296
|
+
/* Totals rows follow the compact height too (`tfoot td` would otherwise win on specificity). */
|
|
297
|
+
.hs-table--compact td,
|
|
298
|
+
.hs-table--compact tfoot td { height: var(--hs-row-compact, 32px); }
|
|
283
299
|
.hs-table--top td { vertical-align: top; padding-block: var(--u-space-sm, 8px); height: auto; }
|
|
284
300
|
/* Cells (`th` too — header text aligns with its values) */
|
|
285
301
|
.hs-num,
|
|
@@ -512,7 +528,10 @@ a.hs-card:hover,
|
|
|
512
528
|
}
|
|
513
529
|
.hs-span-all { grid-column: 1 / -1; }
|
|
514
530
|
|
|
515
|
-
/* ── Side sheet footer — change summary on the left, Cancel / Save on the right ──
|
|
531
|
+
/* ── Side sheet footer — change summary on the left, Cancel / Save on the right ──
|
|
532
|
+
* @deprecated Use `<u-action-bar sticky>` (`@iyulab/modern-app` 0.54): the summary in `slot="summary"`, Cancel and
|
|
533
|
+
* Save as its children, the sheet's inset as `--action-bar-padding-inline`. It also keeps a destructive action
|
|
534
|
+
* apart at the leading edge and puts the main actions on top when narrow. remove: 0.5.0 */
|
|
516
535
|
.hs-sheet-footer {
|
|
517
536
|
display: flex;
|
|
518
537
|
align-items: center;
|
|
@@ -563,7 +582,9 @@ a.hs-card:hover,
|
|
|
563
582
|
}
|
|
564
583
|
.hs-due--soon { background: var(--u-warning-bg-color); color: var(--u-warning-color-strong); }
|
|
565
584
|
.hs-due--over { background: var(--u-danger-bg-color); color: var(--u-danger-color-strong); }
|
|
566
|
-
/* A keyboard hint.
|
|
585
|
+
/* A keyboard hint.
|
|
586
|
+
@deprecated Use a plain `<kbd>` — the house draws it the same way (`components.css`), in the
|
|
587
|
+
monospace face. remove: 0.5.0 */
|
|
567
588
|
.hs-kbd {
|
|
568
589
|
padding: 0 4px;
|
|
569
590
|
border: 1px solid var(--u-border-color);
|