jsl-ui 10.0.1 → 10.0.3

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.
@@ -210,7 +210,7 @@ export const gridShowcase: IJSLVNode = {
210
210
  { tag: "details", attr: { class: "usage" }, children: [
211
211
  text("summary", "Grid showcase scope"),
212
212
  text("p", 'NumericFormatter supplies right-aligned cells; NumericFormatter and DateFormatter apply tabular numerals. Set headerCssClass: "right" or "center" explicitly to match a column’s content. Header alignment is never inferred from its formatter.'),
213
- text("p", "These examples use the existing GridComponent constructor, column definitions, editors, and DataView APIs. The default row height is 36 px; rowHeight can retain a different density. Core presentation follows the shared theme and inherits the host's typography. Filter dialogs, menus, and lifecycle behavior are reserved for later steps.")
213
+ text("p", "These examples use the existing GridComponent constructor, column definitions, editors, and DataView APIs. The default row height is 40 px; rowHeight can retain a different density. Column headers fit up to two lines. Core presentation follows the shared theme and inherits the host's typography. Filter dialogs, menus, and lifecycle behavior are reserved for later steps.")
214
214
  ] }
215
215
  ]
216
216
  };
@@ -8,7 +8,42 @@
8
8
  -webkit-font-smoothing: antialiased;
9
9
  }
10
10
 
11
- * { box-sizing: border-box; }
11
+ /* Keep the showcase layout predictable without resetting sizing on library DOM.
12
+ Grid cells and component internals should exercise their own box model. */
13
+ :where(
14
+ .skip-link, .sidebar, .brand, .brand-caption, .brand-mark, .nav-label, .nav-item,
15
+ .nav-number, .nav-icon, .sidebar-note, .status-dot, main, .page-meta, .page-tools,
16
+ .theme-picker, .version, .hero, .eyebrow, .hero-preview, .preview-caption,
17
+ .preview-note, .hero-description, .overview-bar, .overview-label, .overview-stat,
18
+ .sample-grid, .sample-card, .card-heading, .sample-number, .card-description,
19
+ .sample-row, .sample-status, .sample-code, .inline-note, .showcase-icon,
20
+ .format-bold, .format-italic, .format-underline, .sample-divider, .size-row,
21
+ .size-sample, .size-caption, .context-panel, .context-body, .context-eyebrow,
22
+ .context-copy, .context-footer, .count-badge, .usage, .page-footer,
23
+ .component-section, .showcase-dialog-copy, .dialog-summary, .dialog-summary-label,
24
+ .dialog-form-field, .dialog-member, .dialog-member-avatar, .dialog-member-role,
25
+ .dialog-help, .dialog-check, .tabs-example-copy, .tabs-draft-input,
26
+ .tabs-example-check, .tabs-header-badge, .tabs-rich-header, .date-hero-preview,
27
+ .date-showcase-field, .slider-sample, .showcase-slider, .slider-readout,
28
+ .slider-with-tooltip, .slider-orientations, .showcase-slider-vertical,
29
+ .slider-disabled-example, .showcase-calendar, .select-showcase-field,
30
+ .select-hero-preview, .select-person, .select-person-avatar, .select-person-copy,
31
+ .checks-expander-preview, .checkbox-stack, .checkbox-child-list,
32
+ .expander-example-copy, .expander-preview-copy, .expander-rich-header,
33
+ .expander-stack, .expander-custom-icon, .fields-preview, .field-sample,
34
+ .unstyled-input-sample, .showcase-inline-input, .composed-fields,
35
+ .notification-samples, .notification-action-copy, .loading-label-samples,
36
+ .loading-demo, .loading-demo-panel, .navigation-preview,
37
+ .navigation-compact-sample, .navigation-rich-brand, .navigation-brand-mark,
38
+ .remaining-demo, .layout-demo-panel, .tree-demo-content, .grid-samples,
39
+ .grid-sample-card, .grid-sample-host, .format-preview
40
+ ) { box-sizing: border-box; }
41
+
42
+ /* Showcase-owned native controls also keep the page's intended dimensions. */
43
+ .theme-picker select, .dialog-form-field input, .dialog-form-field textarea,
44
+ .dialog-check input, .tabs-draft-input, .tabs-example-check input {
45
+ box-sizing: border-box;
46
+ }
12
47
  body { margin: 0; font-size: 14px; line-height: 1.6; }
13
48
  a { color: inherit; }
14
49
  .skip-link { position: fixed; top: -5rem; left: 1rem; z-index: 5; padding: 0.5rem 1rem; background: var(--jsl-color-surface); }
@@ -219,7 +254,7 @@ h2 { font-size: 14px; font-weight: 600; margin: 0; letter-spacing: -0.15px; }
219
254
  .navigation-brand-mark { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 6px; background: var(--jsl-color-accent); color: var(--jsl-color-on-accent); font-size: 12px; }
220
255
  .remaining-demo { display: flex; flex-direction: column; gap: 20px; margin-top: 24px; }
221
256
  .remaining-demo h3 { margin: 0; font-size: 14px; font-weight: 600; }
222
- .layout-demo-panel { padding: 16px; background: var(--jsl-color-surface); color: var(--jsl-color-text); overflow: auto; height: 100%; box-sizing: border-box; }
257
+ .layout-demo-panel { padding: 16px; background: var(--jsl-color-surface); color: var(--jsl-color-text); overflow: auto; height: 100%; }
223
258
  .layout-demo-panel p { color: var(--jsl-color-text-secondary); font-size: 13px; line-height: 1.6; }
224
259
  .tree-demo-content { display: flex; align-items: center; gap: 8px; }
225
260
  .grid-samples { display: flex; flex-direction: column; gap: 24px; margin: 24px 0; }
@@ -7,7 +7,7 @@
7
7
  max-width: 100%;
8
8
  color: var(--jsl-color-text);
9
9
  font: inherit;
10
- font-size: .875rem;
10
+ // font-size: .875rem;
11
11
  line-height: 1.5;
12
12
  vertical-align: middle;
13
13
  }
@@ -70,4 +70,4 @@
70
70
  @media (forced-colors: active) {
71
71
  .checkbox-comp { appearance: auto; }
72
72
  .checkbox-comp::after { display: none; }
73
- }
73
+ }
@@ -8,7 +8,7 @@
8
8
  background: var(--jsl-color-surface);
9
9
  color: var(--jsl-color-text);
10
10
  font: inherit;
11
- font-size: .875rem;
11
+ // font-size: .875rem;
12
12
  line-height: 1.5;
13
13
  }
14
14
  .expander-comp > .header {
@@ -58,4 +58,4 @@
58
58
  .expander-comp.disabled > .header { color: var(--jsl-color-disabled-text); cursor: default; background: var(--jsl-color-disabled-surface); }
59
59
  .expander-comp > .header > .toggler:disabled { color: var(--jsl-color-disabled-text); cursor: not-allowed; }
60
60
  @keyframes jsl-expander-appear { from { opacity: 0; } to { opacity: 1; } }
61
- @media (prefers-reduced-motion: reduce) { .expander-comp.expanded > .body { animation: none; } }
61
+ @media (prefers-reduced-motion: reduce) { .expander-comp.expanded > .body { animation: none; } }
@@ -10,7 +10,7 @@
10
10
  margin: 0 0 1rem;
11
11
  color: var(--jsl-color-text);
12
12
  font: inherit;
13
- font-size: .875rem;
13
+ // font-size: .875rem;
14
14
  }
15
15
  .form-field__label { display: block; color: var(--jsl-color-text-secondary); font-size: .75rem; font-weight: 500; line-height: 1.5; }
16
16
  .form-field__required { color: var(--jsl-color-text-muted); }
@@ -33,4 +33,4 @@
33
33
  padding: 0 .25rem;
34
34
  background: var(--jsl-color-surface);
35
35
  }
36
- .form-field:has(.form-field__control:disabled) > .form-field__label { color: var(--jsl-color-disabled-text); }
36
+ .form-field:has(.form-field__control:disabled) > .form-field__label { color: var(--jsl-color-disabled-text); }
@@ -11,7 +11,7 @@
11
11
  vertical-align: middle;
12
12
  color: var(--jsl-color-text);
13
13
  font: inherit;
14
- font-size: .875rem;
14
+ // font-size: .875rem;
15
15
  }
16
16
  .select-comp *, .sel-comp-dd * { box-sizing: border-box; }
17
17
  .select-comp .sel-expander {
@@ -118,7 +118,7 @@
118
118
  background: var(--jsl-color-surface);
119
119
  color: var(--jsl-color-text);
120
120
  font: inherit;
121
- font-size: .875rem;
121
+ // font-size: .875rem;
122
122
  box-shadow: 0 12px 32px rgba(0, 0, 0, .12), 0 2px 6px rgba(0, 0, 0, .06);
123
123
  }
124
124
  .sel-dd-panel { height: 100%; display: flex; flex-direction: column; min-height: 0; }
@@ -202,4 +202,4 @@
202
202
  @media (forced-colors: active) {
203
203
  .sel-comp-dd .sel-dd-item.selected { outline: 2px solid Highlight; outline-offset: -2px; }
204
204
  .sel-chip { border: 1px solid ButtonText; }
205
- }
205
+ }
@@ -1,5 +1,7 @@
1
1
  @import "../../ui/theme.css";
2
- .treeview-comp { color: var(--jsl-color-text); font: inherit; font-size: .875rem; line-height: 1.5; }
2
+ .treeview-comp { color: var(--jsl-color-text); font: inherit;
3
+ // font-size: .875rem;
4
+ line-height: 1.5; }
3
5
  .treeview-comp .tv-ul { list-style: none; padding: 0; margin: 0; }
4
6
  .treeview-comp .tv-ul .tv-ul { margin-left: 1rem; padding-left: .5rem; border-left: 1px solid var(--jsl-color-border-subtle); }
5
7
  .treeview-comp [hidden] { display: none; }
@@ -9,4 +11,4 @@
9
11
  .tv-row:focus-visible { outline: 2px solid var(--jsl-color-focus); outline-offset: -2px; }
10
12
  .tv-chevron { flex: 0 0 .375rem; width: .375rem; height: .375rem; border-right: 1.5px solid var(--jsl-color-text-muted); border-bottom: 1.5px solid var(--jsl-color-text-muted); transform: rotate(-45deg); margin-right: .25rem; }
11
13
  .tv-row[aria-expanded=true] > .tv-chevron { transform: translateY(-.125rem) rotate(45deg); }
12
- .tv-leaf { border-color: transparent; }
14
+ .tv-leaf { border-color: transparent; }
@@ -209,9 +209,12 @@ classes should alter those!
209
209
  margin-bottom: 0;
210
210
  display: inline-block;
211
211
  max-width: 100%;
212
+ max-height: 2.4em;
212
213
  overflow: hidden;
213
214
  text-overflow: ellipsis;
214
- vertical-align: top;
215
+ white-space: normal;
216
+ line-height: 1.2;
217
+ vertical-align: middle;
215
218
  }
216
219
  .slick-header-sortable .slick-column-name { max-width: calc(100% - 1.25rem); }
217
220
  .slick-header-column .slick-sort-indicator,
@@ -221,8 +224,8 @@ classes should alter those!
221
224
  position: relative;
222
225
  vertical-align: top;
223
226
  margin: 0 0 0 .375rem;
224
- height: var(--jsl-grid-header-height, 26px);
225
- line-height: var(--jsl-grid-header-height, 26px);
227
+ height: var(--jsl-grid-header-height, 40px);
228
+ line-height: var(--jsl-grid-header-height, 40px);
226
229
  color: var(--jsl-color-accent);
227
230
  }
228
231
  .slick-header-column .slick-sort-indicator { width: .65rem; }
@@ -46,10 +46,10 @@ classes should alter those!
46
46
  float: left;
47
47
  }
48
48
 
49
- /* Column headers are 6px taller; grouped headers retain their existing size. */
49
+ /* Column headers fit up to two lines; grouped headers retain their existing size. */
50
50
  .slick-header-column.ui-state-default {
51
- height: var(--jsl-grid-header-height, 26px);
52
- line-height: var(--jsl-grid-header-height, 26px);
51
+ height: var(--jsl-grid-header-height, 40px);
52
+ line-height: var(--jsl-grid-header-height, 40px);
53
53
  }
54
54
 
55
55
  .slick-footerrow-column.ui-state-default {
@@ -28,7 +28,7 @@ export function SlickGrid(container, data, columns, options) {
28
28
  alwaysShowHorizontalScroll: false,
29
29
  alwaysAllowHorizontalScroll: false,
30
30
  explicitInitialization: false,
31
- rowHeight: 36,
31
+ rowHeight: 40,
32
32
  defaultColumnWidth: 80,
33
33
  enableAddRow: false,
34
34
  leaveSpaceForNewRows: false,