@iyulab/house-style 0.3.0 → 0.5.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 +79 -0
- package/package.json +6 -6
- package/styles/components.css +59 -0
- package/styles/patterns.css +34 -131
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,84 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.5.0] - 2026-10-14
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **The inline alert as the house callout.** `u-alert[inline]` lays its footer out as a right-hand action column
|
|
8
|
+
beside the title and body, at the dense text step (13px · 20px lines), with the body in the weak text colour.
|
|
9
|
+
- `u-tag[size='sm']` — the small step stays an 18px mark (no block padding, 5px sides) under the house tag padding.
|
|
10
|
+
- `u-tab-nav` — the tab strip of links draws the current view in ink (ink text, ink underline, semibold) at the dense
|
|
11
|
+
text step.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Requires `@iyulab/components` 2.25.0 or later (peer range `^2.25.0`) — the recipes above style its `u-tab-nav`,
|
|
16
|
+
`u-tag size` and `u-alert inline`.
|
|
17
|
+
|
|
18
|
+
### Deprecated
|
|
19
|
+
|
|
20
|
+
- **`.hs-callout` and its parts — use `<u-alert inline open>`** (`@iyulab/components` 2.25): `--warning` / `--info` /
|
|
21
|
+
`--success` / `--danger` → `status`, `__title` → `title`, `__body` → the content, `__actions` → `slot="footer"`
|
|
22
|
+
(the house puts it in the right-hand column). A note (`--note`) is `status="notice"` with `role="note"` and its
|
|
23
|
+
pencil in `slot="icon"`, so it is not announced as news. Removed in 0.6.0.
|
|
24
|
+
- **`.hs-views` / `.hs-views__tab` and `.hs-count` — use `<u-tab-nav label>` with `<u-tab href count>`**
|
|
25
|
+
(`@iyulab/components` 2.25). Saved views are URLs, so the tabs are links in a navigation landmark: the current view
|
|
26
|
+
is `aria-current="page"` (set `value` on the strip), and each link is a Tab stop. Removed in 0.6.0.
|
|
27
|
+
- **A whole card as a link (`a.hs-card`, `.hs-card--link`) — use `<u-card href>`** (`@iyulab/components` 2.25): the
|
|
28
|
+
outer box is the link, the border carries hover, the card does not lift. The titled card itself stays. Removed in
|
|
29
|
+
0.6.0.
|
|
30
|
+
- **`.hs-attr` — use `<u-tag size="sm" appearance="outlined">`** (`@iyulab/components` 2.25). Removed in 0.6.0.
|
|
31
|
+
|
|
32
|
+
### Removed
|
|
33
|
+
|
|
34
|
+
- The 0.4.0 deprecations: `.hs-page-head` and its parts (use `u-page-header`), `.hs-kbd` (use `<kbd>`), `.hs-stats` /
|
|
35
|
+
`.hs-stat` and its parts including `.hs-stat--hero` (use `u-info-section layout="strip"` with
|
|
36
|
+
`u-info-field size="lg"`), and `.hs-sheet-footer` and its parts (use `<u-action-bar sticky>`).
|
|
37
|
+
|
|
38
|
+
### Guide
|
|
39
|
+
|
|
40
|
+
- The list screen's saved views are a `u-tab-nav`, the attribute next to an order id is a small tag, and the callouts
|
|
41
|
+
are inline alerts.
|
|
42
|
+
|
|
43
|
+
## [0.4.0] - 2026-10-14
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- `<kbd>` outside a component takes the keyboard-hint look (border, canvas background, overline size).
|
|
48
|
+
- `.hs-table-toolbar__actions` — the action group at the end of a table toolbar.
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- Requires `@iyulab/components` 2.24.0 or later (peer range `^2.24.0`). The house sets the selection role
|
|
53
|
+
(`--u-selection-color`), which components reads from 2.24.0 — with an older components a checked box, a selected
|
|
54
|
+
radio and an on switch keep the primary colour.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### Deprecated
|
|
58
|
+
|
|
59
|
+
- **`.hs-page-head` and its parts (`__eyebrow` · `__title` · `__description` · `__actions`) — use `u-page-header`**
|
|
60
|
+
from `@iyulab/modern-app`. The house already draws that component the same way (label-size eyebrow and
|
|
61
|
+
description, display-size title), and it carries the page's `h1`, a back link and a status slot the class pattern
|
|
62
|
+
does not. Move the eyebrow, title and description to its `eyebrow`, `title` and `subtitle` attributes and put each
|
|
63
|
+
scope picker and action in `slot="actions"`. Removed in 0.5.0.
|
|
64
|
+
- **`.hs-kbd` — use a plain `<kbd>`.** The house now draws `<kbd>` as the same small outlined cap, in the monospace
|
|
65
|
+
face. Removed in 0.5.0.
|
|
66
|
+
- **`.hs-stats` / `.hs-stat` and its parts — use `u-info-section layout="strip"`** with `u-info-field size="lg"`
|
|
67
|
+
(`@iyulab/modern-app` 0.54): `__label` → `label`, `__value` → `value`, `__unit` → `unit`, `__sub` → `description`,
|
|
68
|
+
`--warning` / `--danger` / `--success` → `tone="warning"` / `"negative"` / `"positive"`. The same strip — one surface,
|
|
69
|
+
hairline dividers, all side by side or all stacked below 640px. `.hs-stat--hero` has no counterpart (nothing used it)
|
|
70
|
+
and goes with it. Removed in 0.5.0.
|
|
71
|
+
- **`.hs-sheet-footer` and its parts — use `<u-action-bar sticky>`** (`@iyulab/modern-app` 0.54): the change summary in
|
|
72
|
+
`slot="summary"`, Cancel and Save as its children, the sheet's inset as `--action-bar-padding-inline`. It also keeps
|
|
73
|
+
a destructive action apart at the leading edge and puts the main actions on top when narrow. Removed in 0.5.0.
|
|
74
|
+
|
|
75
|
+
### Fixed
|
|
76
|
+
|
|
77
|
+
- `.hs-views` no longer draws a vertical scrollbar beside its tabs. The selected tab's underline reached 1px
|
|
78
|
+
past the scrolling strip (a `-1px` margin over the strip's bottom border); the base line is now an inset shadow the
|
|
79
|
+
underline paints over.
|
|
80
|
+
- `.hs-table--compact` totals rows take the compact height too. `.hs-table tfoot td` set 40px with a higher
|
|
81
|
+
specificity, so a compact table's subtotal, tax and total rows stood taller than its body rows.
|
|
3
82
|
## [0.3.0] - 2026-10-13
|
|
4
83
|
|
|
5
84
|
### Changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iyulab/house-style",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.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.25.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.25.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);
|
|
@@ -129,6 +140,54 @@ u-tag {
|
|
|
129
140
|
--tag-padding-inline: 8px;
|
|
130
141
|
--tag-gap: 5px;
|
|
131
142
|
}
|
|
143
|
+
/* The small step — 18px marks inside a line of text (an attribute next to an id): no block padding, 5px sides. */
|
|
144
|
+
u-tag[size='sm'] {
|
|
145
|
+
--tag-padding-block: 0;
|
|
146
|
+
--tag-padding-inline: 5px;
|
|
147
|
+
--tag-gap: 4px;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* ── Tab strip of links (saved views) — ink, not blue: the current view is ink text with an ink underline,
|
|
151
|
+
* at the dense text step. ── */
|
|
152
|
+
u-tab-nav {
|
|
153
|
+
--tab-nav-color: var(--u-txt-color);
|
|
154
|
+
font-size: var(--hs-text-dense-size, 13px);
|
|
155
|
+
}
|
|
156
|
+
u-tab-nav u-tab[active] {
|
|
157
|
+
font-weight: 600;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* ── Inline alert — the house callout: actions in a right-hand column beside the title and body, at the dense
|
|
161
|
+
* text step. A floating alert (no `inline`) keeps the component layout. ── */
|
|
162
|
+
u-alert[inline]::part(container) {
|
|
163
|
+
display: grid;
|
|
164
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
165
|
+
column-gap: var(--u-space-md, 12px);
|
|
166
|
+
align-items: center;
|
|
167
|
+
}
|
|
168
|
+
u-alert[inline]::part(header),
|
|
169
|
+
u-alert[inline]::part(content) {
|
|
170
|
+
grid-column: 1;
|
|
171
|
+
}
|
|
172
|
+
u-alert[inline]::part(footer) {
|
|
173
|
+
grid-column: 2;
|
|
174
|
+
grid-row: 1 / span 2;
|
|
175
|
+
display: flex;
|
|
176
|
+
gap: var(--u-space-sm, 8px);
|
|
177
|
+
}
|
|
178
|
+
u-alert[inline]::part(header) {
|
|
179
|
+
margin-bottom: 0;
|
|
180
|
+
font-size: var(--hs-text-dense-size, 13px);
|
|
181
|
+
}
|
|
182
|
+
u-alert[inline]::part(title) {
|
|
183
|
+
line-height: 20px;
|
|
184
|
+
}
|
|
185
|
+
u-alert[inline]::part(content) {
|
|
186
|
+
font-size: var(--hs-text-dense-size, 13px);
|
|
187
|
+
font-weight: 400;
|
|
188
|
+
line-height: 20px;
|
|
189
|
+
color: var(--u-txt-color-weak);
|
|
190
|
+
}
|
|
132
191
|
|
|
133
192
|
/* ── Card — flat surface, hairline border; shadow is for things that float ── */
|
|
134
193
|
u-card {
|
package/styles/patterns.css
CHANGED
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
* @iyulab/house-style — layout patterns
|
|
3
3
|
* ==========================================================================
|
|
4
4
|
* Class-based patterns for the arrangements a line-of-business screen repeats and no single
|
|
5
|
-
* component owns: the
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* component owns: the filter bar, the table card, the plain data table, the form section, the
|
|
6
|
+
* detail layout. They work in any framework (plain HTML, Lit, React) and read tokens only — no
|
|
7
|
+
* literal colours. Where a component owns the arrangement, the component is the canonical form
|
|
8
|
+
* and the pattern is deprecated with the version it goes in (`remove:`).
|
|
8
9
|
*
|
|
9
10
|
* Prefix `hs-`. Everything sits in `@layer iyu.house`; an application rule always wins.
|
|
10
11
|
*
|
|
11
12
|
* 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
|
|
13
|
+
* list = u-page-header → .hs-filter-bar → u-info-section layout="strip" → .hs-table-card (toolbar · table · pager)
|
|
14
|
+
* detail = side sheet: head (id · status · one primary action) → steps → u-info-section strip → tabs → cards
|
|
15
|
+
* edit = side sheet with .hs-fieldset sections and a pinned u-action-bar (summary slot)
|
|
15
16
|
*
|
|
16
17
|
* Rules the patterns encode:
|
|
17
18
|
* · one ink (primary) button per view — the rest are outlined, plain or in a menu
|
|
@@ -33,48 +34,19 @@
|
|
|
33
34
|
min-width: 0;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
/* Page head — eyebrow · title · one-line description on the left; on the right a scope
|
|
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. */
|
|
39
|
-
.hs-page-head {
|
|
40
|
-
display: flex;
|
|
41
|
-
align-items: flex-end;
|
|
42
|
-
justify-content: space-between;
|
|
43
|
-
gap: var(--u-space-lg, 16px);
|
|
44
|
-
flex-wrap: wrap;
|
|
45
|
-
}
|
|
46
|
-
.hs-page-head__eyebrow {
|
|
47
|
-
margin: 0 0 2px;
|
|
48
|
-
font-size: var(--u-text-label-size, 12px);
|
|
49
|
-
line-height: 16px;
|
|
50
|
-
color: var(--u-txt-color-weak);
|
|
51
|
-
}
|
|
52
|
-
.hs-page-head__title {
|
|
53
|
-
margin: 0;
|
|
54
|
-
font-size: var(--u-text-display-size, 22px);
|
|
55
|
-
line-height: var(--u-text-display-leading, 1.364);
|
|
56
|
-
font-weight: var(--u-text-display-weight, 700);
|
|
57
|
-
letter-spacing: var(--u-text-display-tracking, -0.01em);
|
|
58
|
-
color: var(--u-txt-color);
|
|
59
|
-
}
|
|
60
|
-
.hs-page-head__description {
|
|
61
|
-
margin: 2px 0 0;
|
|
62
|
-
font-size: var(--u-text-label-size, 12px);
|
|
63
|
-
line-height: 18px;
|
|
64
|
-
color: var(--u-txt-color-weak);
|
|
65
|
-
}
|
|
66
|
-
.hs-page-head__actions {
|
|
67
|
-
display: flex;
|
|
68
|
-
align-items: center;
|
|
69
|
-
gap: var(--u-space-sm, 8px);
|
|
70
|
-
flex-wrap: wrap;
|
|
71
|
-
}
|
|
72
37
|
|
|
73
38
|
/* ── Saved views — tabs above the filter bar, each with a count ─────────── */
|
|
39
|
+
/* @deprecated Use `<u-tab-nav label>` with `<u-tab href count>` (`@iyulab/components` 2.25) — the same strip as a
|
|
40
|
+
navigation landmark of links: the current view is `aria-current="page"` (these tabs are URLs, so they are links,
|
|
41
|
+
not a tablist), each link is a Tab stop, and `count` is the quiet count. The house draws it this way
|
|
42
|
+
(`components.css`). `.hs-count` goes with it. remove: 0.6.0 */
|
|
74
43
|
.hs-views {
|
|
75
44
|
display: flex;
|
|
76
45
|
gap: var(--u-space-2xs, 4px);
|
|
77
|
-
border
|
|
46
|
+
/* The base line is an inset shadow, not a border: a tab's 2px underline paints over it without the tab
|
|
47
|
+
reaching past the box — with a border and a -1px tab margin the scroll container overflowed by 1px and
|
|
48
|
+
drew a vertical scrollbar beside the tabs. */
|
|
49
|
+
box-shadow: inset 0 -1px 0 var(--u-border-color);
|
|
78
50
|
overflow-x: auto;
|
|
79
51
|
}
|
|
80
52
|
.hs-views__tab {
|
|
@@ -82,7 +54,6 @@
|
|
|
82
54
|
align-items: center;
|
|
83
55
|
gap: 6px;
|
|
84
56
|
padding: var(--u-space-sm, 8px) var(--u-space-md, 12px);
|
|
85
|
-
margin-bottom: -1px;
|
|
86
57
|
border: 0;
|
|
87
58
|
border-bottom: 2px solid transparent;
|
|
88
59
|
background: none;
|
|
@@ -145,63 +116,6 @@
|
|
|
145
116
|
display: none;
|
|
146
117
|
}
|
|
147
118
|
|
|
148
|
-
/* ── Stat strip — the result's totals as cells, not a sentence ───────────
|
|
149
|
-
* 3–5 cells: label → value → one supporting line. One hero value per screen at most. */
|
|
150
|
-
/* Side by side, or stacked when the strip is narrower than 640px — all or nothing, never a ragged row.
|
|
151
|
-
* No size container: the threshold is each stat's flex-basis, calc((640px - 100%) * 999) — negative
|
|
152
|
-
* (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. */
|
|
154
|
-
.hs-stats {
|
|
155
|
-
display: flex;
|
|
156
|
-
flex-wrap: wrap;
|
|
157
|
-
gap: 1px;
|
|
158
|
-
background: var(--u-border-color);
|
|
159
|
-
border: 1px solid var(--u-border-color);
|
|
160
|
-
border-radius: var(--u-radius-xl, 10px);
|
|
161
|
-
overflow: hidden;
|
|
162
|
-
}
|
|
163
|
-
.hs-stat {
|
|
164
|
-
flex: 1 1 calc((640px - 100%) * 999);
|
|
165
|
-
min-width: 0;
|
|
166
|
-
padding: var(--u-space-md, 12px) var(--u-space-lg, 16px);
|
|
167
|
-
background: var(--u-bg-color);
|
|
168
|
-
}
|
|
169
|
-
.hs-stat__label {
|
|
170
|
-
font-size: var(--u-text-label-size, 12px);
|
|
171
|
-
line-height: 16px;
|
|
172
|
-
font-weight: 500;
|
|
173
|
-
color: var(--u-txt-color-weak);
|
|
174
|
-
}
|
|
175
|
-
.hs-stat__value {
|
|
176
|
-
margin-top: 2px;
|
|
177
|
-
font-size: var(--u-text-title-size, 18px);
|
|
178
|
-
line-height: 26px;
|
|
179
|
-
font-weight: 700;
|
|
180
|
-
font-variant-numeric: tabular-nums;
|
|
181
|
-
white-space: nowrap;
|
|
182
|
-
overflow: hidden;
|
|
183
|
-
text-overflow: ellipsis;
|
|
184
|
-
color: var(--u-txt-color);
|
|
185
|
-
}
|
|
186
|
-
.hs-stat__unit {
|
|
187
|
-
margin-inline-start: 2px;
|
|
188
|
-
font-size: var(--u-text-caption-size, 12px);
|
|
189
|
-
font-weight: 500;
|
|
190
|
-
color: var(--u-txt-color-weak);
|
|
191
|
-
}
|
|
192
|
-
.hs-stat__sub {
|
|
193
|
-
font-size: var(--u-text-caption-size, 12px);
|
|
194
|
-
line-height: 18px;
|
|
195
|
-
color: var(--u-txt-color-weaker);
|
|
196
|
-
}
|
|
197
|
-
.hs-stat--hero .hs-stat__value {
|
|
198
|
-
font-size: var(--hs-text-hero-size, 28px);
|
|
199
|
-
line-height: 34px;
|
|
200
|
-
letter-spacing: -0.01em;
|
|
201
|
-
}
|
|
202
|
-
.hs-stat--warning .hs-stat__value { color: var(--u-warning-color-strong); }
|
|
203
|
-
.hs-stat--danger .hs-stat__value { color: var(--u-danger-color-strong); }
|
|
204
|
-
.hs-stat--success .hs-stat__value { color: var(--u-success-color-strong); }
|
|
205
119
|
|
|
206
120
|
/* ── Table card — toolbar · table · pager on one surface ──────────────── */
|
|
207
121
|
.hs-table-card {
|
|
@@ -233,6 +147,12 @@
|
|
|
233
147
|
font-size: var(--hs-text-dense-size, 13px);
|
|
234
148
|
font-weight: 600;
|
|
235
149
|
}
|
|
150
|
+
.hs-table-toolbar__actions {
|
|
151
|
+
display: flex;
|
|
152
|
+
align-items: center;
|
|
153
|
+
gap: var(--u-space-sm, 8px);
|
|
154
|
+
flex-wrap: wrap;
|
|
155
|
+
}
|
|
236
156
|
.hs-pager {
|
|
237
157
|
display: flex;
|
|
238
158
|
align-items: center;
|
|
@@ -279,7 +199,9 @@
|
|
|
279
199
|
}
|
|
280
200
|
/* One line separates the totals from the body — not one per totals row (subtotal · tax · total). */
|
|
281
201
|
.hs-table tfoot tr:first-child td { border-top: 1px solid var(--u-border-color); }
|
|
282
|
-
|
|
202
|
+
/* Totals rows follow the compact height too (`tfoot td` would otherwise win on specificity). */
|
|
203
|
+
.hs-table--compact td,
|
|
204
|
+
.hs-table--compact tfoot td { height: var(--hs-row-compact, 32px); }
|
|
283
205
|
.hs-table--top td { vertical-align: top; padding-block: var(--u-space-sm, 8px); height: auto; }
|
|
284
206
|
/* Cells (`th` too — header text aligns with its values) */
|
|
285
207
|
.hs-num,
|
|
@@ -357,6 +279,8 @@ tr[aria-selected='true'] .hs-row-actions {
|
|
|
357
279
|
text-decoration: none;
|
|
358
280
|
}
|
|
359
281
|
.hs-card__link:hover { text-decoration: underline; }
|
|
282
|
+
/* @deprecated A whole card as a link: use `<u-card href>` (`@iyulab/components` 2.25) — the outer box is the link,
|
|
283
|
+
the border carries hover and the card does not lift. remove: 0.6.0 */
|
|
360
284
|
a.hs-card,
|
|
361
285
|
.hs-card--link { cursor: pointer; transition: border-color 0.12s ease-out; }
|
|
362
286
|
/* A whole card as a link reads as a card: ink text, no underline — the border carries hover. */
|
|
@@ -380,7 +304,8 @@ a.hs-card:hover,
|
|
|
380
304
|
.hs-dl > dd { margin: 0; min-width: 0; }
|
|
381
305
|
|
|
382
306
|
/* Two-column detail: main column plus a 340px side panel once the columns are 960px wide, one column
|
|
383
|
-
* below that. No size container — the threshold is each column's flex-basis (
|
|
307
|
+
* below that. No size container — the threshold is each column's flex-basis, calc((960px - 100%) * 999):
|
|
308
|
+
* negative (so 0) when wide, huge when narrow (the "Holy Albatross"). */
|
|
384
309
|
.hs-detail__cols {
|
|
385
310
|
display: flex;
|
|
386
311
|
flex-wrap: wrap;
|
|
@@ -403,6 +328,10 @@ a.hs-card:hover,
|
|
|
403
328
|
}
|
|
404
329
|
|
|
405
330
|
/* ── Callout — a conclusion in the title, two lines of body at most ──────
|
|
331
|
+
* @deprecated Use `<u-alert inline open>` (`@iyulab/components` 2.25) — `status` for the tone, `title` for the
|
|
332
|
+
* conclusion, the body as content, actions in `slot="footer"`, and `slot="icon"` for a note's pencil; a note is a
|
|
333
|
+
* neutral alert with `role="note"`. The house lays the footer out as the right-hand action column
|
|
334
|
+
* (`components.css`). remove: 0.6.0
|
|
406
335
|
* No thick coloured edge: an icon and a tint carry the tone. `--note` is a person's note
|
|
407
336
|
* (a remark on a record), not a warning — it is neutral on purpose. */
|
|
408
337
|
.hs-callout {
|
|
@@ -512,27 +441,10 @@ a.hs-card:hover,
|
|
|
512
441
|
}
|
|
513
442
|
.hs-span-all { grid-column: 1 / -1; }
|
|
514
443
|
|
|
515
|
-
/* ── Side sheet footer — change summary on the left, Cancel / Save on the right ── */
|
|
516
|
-
.hs-sheet-footer {
|
|
517
|
-
display: flex;
|
|
518
|
-
align-items: center;
|
|
519
|
-
justify-content: space-between;
|
|
520
|
-
gap: var(--u-space-sm, 8px);
|
|
521
|
-
padding: var(--u-space-md, 12px) var(--u-space-xl, 20px);
|
|
522
|
-
border-top: 1px solid var(--u-border-color);
|
|
523
|
-
background: var(--u-bg-color);
|
|
524
|
-
}
|
|
525
|
-
.hs-sheet-footer__summary {
|
|
526
|
-
font-size: var(--u-text-caption-size, 12px);
|
|
527
|
-
color: var(--u-txt-color-weak);
|
|
528
|
-
}
|
|
529
|
-
.hs-sheet-footer__actions {
|
|
530
|
-
display: flex;
|
|
531
|
-
gap: var(--u-space-sm, 8px);
|
|
532
|
-
}
|
|
533
444
|
|
|
534
445
|
/* ── Small marks ───────────────────────────────────────────────────────── */
|
|
535
|
-
/* A quiet attribute label next to an identifier (not a status — no colour).
|
|
446
|
+
/* A quiet attribute label next to an identifier (not a status — no colour).
|
|
447
|
+
@deprecated Use `<u-tag size="sm" appearance="outlined">` (`@iyulab/components` 2.25). remove: 0.6.0 */
|
|
536
448
|
.hs-attr {
|
|
537
449
|
display: inline-flex;
|
|
538
450
|
align-items: center;
|
|
@@ -563,14 +475,5 @@ a.hs-card:hover,
|
|
|
563
475
|
}
|
|
564
476
|
.hs-due--soon { background: var(--u-warning-bg-color); color: var(--u-warning-color-strong); }
|
|
565
477
|
.hs-due--over { background: var(--u-danger-bg-color); color: var(--u-danger-color-strong); }
|
|
566
|
-
/* A keyboard hint. */
|
|
567
|
-
.hs-kbd {
|
|
568
|
-
padding: 0 4px;
|
|
569
|
-
border: 1px solid var(--u-border-color);
|
|
570
|
-
border-radius: var(--u-radius-md, 4px);
|
|
571
|
-
background: var(--u-canvas-bg-color);
|
|
572
|
-
font: 500 11px/16px var(--u-font-base);
|
|
573
|
-
color: var(--u-txt-color-weak);
|
|
574
|
-
}
|
|
575
478
|
|
|
576
479
|
} /* @layer iyu.house */
|