@scattered-light/loomiere-base-ui 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.
Files changed (98) hide show
  1. package/dist/design-system/components/Accordion/README.md +1 -1
  2. package/dist/design-system/components/Accordion/preview.html +1 -1
  3. package/dist/design-system/components/AlertDialog/preview.html +1 -1
  4. package/dist/design-system/components/Autocomplete/preview.html +1 -1
  5. package/dist/design-system/components/Avatar/README.md +1 -1
  6. package/dist/design-system/components/Avatar/preview.html +1 -1
  7. package/dist/design-system/components/Button/preview.html +3 -3
  8. package/dist/design-system/components/Checkbox/preview.html +1 -1
  9. package/dist/design-system/components/CheckboxGroup/preview.html +1 -1
  10. package/dist/design-system/components/Collapsible/preview.html +1 -1
  11. package/dist/design-system/components/Combobox/preview.html +1 -1
  12. package/dist/design-system/components/ContextMenu/preview.html +1 -1
  13. package/dist/design-system/components/Dialog/README.md +1 -1
  14. package/dist/design-system/components/Dialog/preview.html +1 -1
  15. package/dist/design-system/components/Drawer/preview.html +1 -1
  16. package/dist/design-system/components/Field/preview.html +1 -1
  17. package/dist/design-system/components/Fieldset/preview.html +1 -1
  18. package/dist/design-system/components/Form/preview.html +1 -1
  19. package/dist/design-system/components/Input/preview.html +1 -1
  20. package/dist/design-system/components/Menu/preview.html +1 -1
  21. package/dist/design-system/components/Menubar/preview.html +1 -1
  22. package/dist/design-system/components/Meter/preview.html +1 -1
  23. package/dist/design-system/components/NavigationMenu/preview.html +1 -1
  24. package/dist/design-system/components/NumberField/preview.html +1 -1
  25. package/dist/design-system/components/OTPField/preview.html +1 -1
  26. package/dist/design-system/components/Popover/preview.html +1 -1
  27. package/dist/design-system/components/PreviewCard/README.md +1 -1
  28. package/dist/design-system/components/PreviewCard/preview.html +1 -1
  29. package/dist/design-system/components/Progress/preview.html +1 -1
  30. package/dist/design-system/components/Radio/preview.html +1 -1
  31. package/dist/design-system/components/ScrollArea/preview.html +1 -1
  32. package/dist/design-system/components/Select/preview.html +1 -1
  33. package/dist/design-system/components/Separator/preview.html +1 -1
  34. package/dist/design-system/components/Slider/preview.html +1 -1
  35. package/dist/design-system/components/Switch/preview.html +1 -1
  36. package/dist/design-system/components/Table/README.md +50 -0
  37. package/dist/design-system/components/Table/preview.html +19 -0
  38. package/dist/design-system/components/Tabs/preview.html +1 -1
  39. package/dist/design-system/components/Toast/preview.html +1 -1
  40. package/dist/design-system/components/Toggle/README.md +1 -1
  41. package/dist/design-system/components/Toggle/preview.html +1 -1
  42. package/dist/design-system/components/ToggleGroup/preview.html +1 -1
  43. package/dist/design-system/components/Toolbar/preview.html +1 -1
  44. package/dist/design-system/components/Tooltip/preview.html +1 -1
  45. package/dist/design-system/components/bundle.js +5 -5
  46. package/dist/design-system/components/index.d.ts +1 -11
  47. package/dist/design-system/components/styles.css +659 -589
  48. package/dist/index.d.ts +1 -11
  49. package/dist/index.js +27 -31
  50. package/dist/index.js.map +1 -1
  51. package/dist/styles/components/Accordion.css +12 -12
  52. package/dist/styles/components/AlertDialog.css +1 -1
  53. package/dist/styles/components/Autocomplete.css +22 -22
  54. package/dist/styles/components/Avatar.css +15 -42
  55. package/dist/styles/components/Button.css +21 -21
  56. package/dist/styles/components/Checkbox.css +16 -16
  57. package/dist/styles/components/CheckboxGroup.css +1 -1
  58. package/dist/styles/components/Collapsible.css +16 -16
  59. package/dist/styles/components/Combobox.css +62 -62
  60. package/dist/styles/components/ContextMenu.css +12 -12
  61. package/dist/styles/components/Dialog.css +12 -12
  62. package/dist/styles/components/Drawer.css +11 -11
  63. package/dist/styles/components/Field.css +16 -16
  64. package/dist/styles/components/Fieldset.css +11 -11
  65. package/dist/styles/components/Form.css +1 -1
  66. package/dist/styles/components/Input.css +21 -21
  67. package/dist/styles/components/Menu.css +12 -12
  68. package/dist/styles/components/Menubar.css +17 -17
  69. package/dist/styles/components/Meter.css +11 -11
  70. package/dist/styles/components/NavigationMenu.css +22 -22
  71. package/dist/styles/components/NumberField.css +1 -1
  72. package/dist/styles/components/OTPField.css +11 -11
  73. package/dist/styles/components/Popover.css +11 -11
  74. package/dist/styles/components/PreviewCard.css +12 -12
  75. package/dist/styles/components/Progress.css +11 -11
  76. package/dist/styles/components/Radio.css +16 -16
  77. package/dist/styles/components/ScrollArea.css +1 -1
  78. package/dist/styles/components/Select.css +22 -22
  79. package/dist/styles/components/Separator.css +1 -1
  80. package/dist/styles/components/Slider.css +11 -11
  81. package/dist/styles/components/Switch.css +22 -22
  82. package/dist/styles/components/Table.css +144 -0
  83. package/dist/styles/components/Tabs.css +31 -31
  84. package/dist/styles/components/Toast.css +11 -11
  85. package/dist/styles/components/Toggle.css +24 -22
  86. package/dist/styles/components/ToggleGroup.css +1 -1
  87. package/dist/styles/components/Toolbar.css +6 -6
  88. package/dist/styles/components/Tooltip.css +6 -6
  89. package/dist/styles/index.css +2 -2
  90. package/dist/styles/reset/accessibility.css +1 -1
  91. package/dist/styles/reset/reset-accessibility.css +1 -1
  92. package/dist/styles/reset/reset-tailwind.css +1 -1
  93. package/dist/styles/reset/reset.css +1 -1
  94. package/dist/styles/tailwind.css +2 -2
  95. package/package.json +2 -2
  96. package/dist/design-system/components/IconButton/README.md +0 -31
  97. package/dist/design-system/components/IconButton/preview.html +0 -19
  98. package/dist/styles/components/IconButton.css +0 -49
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Switch - Mojave Theme
3
3
  * Switch keeps its track sizes. The thumb, its travel and the ON/OFF text are
4
4
  * worked out from them: the thumb fills the track's height inside the padding,
@@ -70,12 +70,12 @@
70
70
  display: flex;
71
71
  align-items: center;
72
72
  justify-content: center;
73
- font-family: var(--sl-font-condense-subtitle-label-font-family);
74
- font-size: var(--sl-font-condense-subtitle-label-font-size);
75
- font-weight: var(--sl-font-condense-subtitle-label-font-weight);
76
- line-height: var(--sl-font-condense-subtitle-label-line-height);
77
- letter-spacing: var(--sl-font-condense-subtitle-label-letter-spacing);
78
- text-transform: var(--sl-font-condense-subtitle-label-text-transform);
73
+ font-family: var(--sl-font-eyebrow-condense-font-family);
74
+ font-size: var(--sl-font-eyebrow-condense-font-size);
75
+ font-weight: var(--sl-font-eyebrow-condense-font-weight);
76
+ line-height: var(--sl-font-eyebrow-condense-line-height);
77
+ letter-spacing: var(--sl-font-eyebrow-condense-letter-spacing);
78
+ text-transform: var(--sl-font-eyebrow-condense-text-transform);
79
79
  font-size: var(--switch-text-size);
80
80
  line-height: 1;
81
81
  color: var(--sl-text-secondary);
@@ -137,27 +137,27 @@
137
137
 
138
138
  /* Switch labels run one step smaller than checkbox and radio labels (switch.json). */
139
139
  .SwitchLabel {
140
- font-family: var(--sl-font-base-label-font-family);
141
- font-size: var(--sl-font-base-label-font-size);
142
- font-weight: var(--sl-font-base-label-font-weight);
143
- line-height: var(--sl-font-base-label-line-height);
144
- letter-spacing: var(--sl-font-base-label-letter-spacing);
140
+ font-family: var(--sl-font-label-base-font-family);
141
+ font-size: var(--sl-font-label-base-font-size);
142
+ font-weight: var(--sl-font-label-base-font-weight);
143
+ line-height: var(--sl-font-label-base-line-height);
144
+ letter-spacing: var(--sl-font-label-base-letter-spacing);
145
145
  }
146
146
 
147
147
  .SwitchContainer[data-size='sm'] .SwitchLabel {
148
- font-family: var(--sl-font-minimize-font-family);
149
- font-size: var(--sl-font-minimize-font-size);
150
- font-weight: var(--sl-font-minimize-font-weight);
151
- line-height: var(--sl-font-minimize-line-height);
152
- letter-spacing: var(--sl-font-minimize-letter-spacing);
148
+ font-family: var(--sl-font-body-minimize-font-family);
149
+ font-size: var(--sl-font-body-minimize-font-size);
150
+ font-weight: var(--sl-font-body-minimize-font-weight);
151
+ line-height: var(--sl-font-body-minimize-line-height);
152
+ letter-spacing: var(--sl-font-body-minimize-letter-spacing);
153
153
  }
154
154
 
155
155
  .SwitchContainer[data-size='lg'] .SwitchLabel {
156
- font-family: var(--sl-font-base-font-family);
157
- font-size: var(--sl-font-base-font-size);
158
- font-weight: var(--sl-font-base-font-weight);
159
- line-height: var(--sl-font-base-line-height);
160
- letter-spacing: var(--sl-font-base-letter-spacing);
156
+ font-family: var(--sl-font-body-base-font-family);
157
+ font-size: var(--sl-font-body-base-font-size);
158
+ font-weight: var(--sl-font-body-base-font-weight);
159
+ line-height: var(--sl-font-body-base-line-height);
160
+ letter-spacing: var(--sl-font-body-base-letter-spacing);
161
161
  }
162
162
 
163
163
  .SwitchContainer[data-disabled] .SwitchLabel {
@@ -0,0 +1,144 @@
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
+ /* Table - Mojave Theme
3
+ *
4
+ * Base UI has no table, so this styles the native <table class="Table"> elements with the
5
+ * table concept (tokens/semantic/table.json), the same tokens the AG Grid themes read: a small
6
+ * hand-built table and a full grid look alike. Rows answer to aria-selected="true" (or
7
+ * data-selected) for selection; cells take data-align="end" for numbers.
8
+ */
9
+
10
+ .Table {
11
+ font-family: var(--sl-font-body-condense-font-family);
12
+ font-size: var(--sl-font-body-condense-font-size);
13
+ font-weight: var(--sl-font-body-condense-font-weight);
14
+ line-height: var(--sl-font-body-condense-line-height);
15
+ letter-spacing: var(--sl-font-body-condense-letter-spacing);
16
+ box-sizing: border-box;
17
+ width: 100%;
18
+ border-collapse: separate;
19
+ border-spacing: 0;
20
+ background: var(--sl-table-background);
21
+ color: var(--sl-table-color);
22
+ border: var(--sl-stroke-default) solid var(--sl-table-border-color);
23
+ border-radius: var(--sl-table-radius);
24
+ overflow: hidden;
25
+ font-variant-numeric: tabular-nums;
26
+ }
27
+
28
+ .Table caption {
29
+ font-family: var(--sl-font-body-condense-font-family);
30
+ font-size: var(--sl-font-body-condense-font-size);
31
+ font-weight: var(--sl-font-body-condense-font-weight);
32
+ line-height: var(--sl-font-body-condense-line-height);
33
+ letter-spacing: var(--sl-font-body-condense-letter-spacing);
34
+ caption-side: bottom;
35
+ padding-block: var(--sl-space-2);
36
+ color: var(--sl-table-subtle-color);
37
+ text-align: start;
38
+ }
39
+
40
+ /* Header: the tray band, a little taller than the rows */
41
+ .Table th {
42
+ font-family: var(--sl-font-subtitle-condense-font-family);
43
+ font-size: var(--sl-font-subtitle-condense-font-size);
44
+ font-weight: var(--sl-font-subtitle-condense-font-weight);
45
+ line-height: var(--sl-font-subtitle-condense-line-height);
46
+ letter-spacing: var(--sl-font-subtitle-condense-letter-spacing);
47
+ height: var(--sl-table-header-height);
48
+ padding-block: 0;
49
+ padding-inline: var(--sl-table-cell-padding-inline);
50
+ background: var(--sl-table-header-background);
51
+ color: var(--sl-table-header-color);
52
+ text-align: start;
53
+ vertical-align: middle;
54
+ border-bottom: var(--sl-stroke-default) solid var(--sl-table-border-color);
55
+ }
56
+
57
+ /* A header that sorts: aria-sort on the th */
58
+ .Table th[aria-sort] {
59
+ cursor: pointer;
60
+ transition: background-color var(--sl-duration-fast) var(--sl-easing-default);
61
+ }
62
+
63
+ .Table th[aria-sort]:hover {
64
+ background: var(--sl-table-header-background-hover);
65
+ }
66
+
67
+ /* Body cells */
68
+ .Table td {
69
+ height: var(--sl-table-row-height);
70
+ padding-block: 0;
71
+ padding-inline: var(--sl-table-cell-padding-inline);
72
+ vertical-align: middle;
73
+ border-bottom: var(--sl-stroke-default) solid var(--sl-table-row-border-color);
74
+ }
75
+
76
+ .Table tbody tr:last-child td,
77
+ .Table tbody:last-child tr:last-child td {
78
+ border-bottom: none;
79
+ }
80
+
81
+ /* A row header (th in tbody) reads like a cell, in the header's weight */
82
+ .Table tbody th {
83
+ background: transparent;
84
+ border-bottom: var(--sl-stroke-default) solid var(--sl-table-row-border-color);
85
+ }
86
+
87
+ /* Numbers and amounts: right-aligned so digits line up */
88
+ .Table [data-align='end'] {
89
+ text-align: end;
90
+ }
91
+
92
+ .Table [data-align='center'] {
93
+ text-align: center;
94
+ }
95
+
96
+ /* Secondary text in a cell */
97
+ .Table [data-subtle] {
98
+ color: var(--sl-table-subtle-color);
99
+ }
100
+
101
+ /* Hover and selection: the same tints as list items */
102
+ @media (hover: hover) {
103
+ .Table tbody tr:hover > * {
104
+ background: var(--sl-table-row-hover);
105
+ color: var(--sl-item-color-hover);
106
+ }
107
+ }
108
+
109
+ .Table tbody tr:is([aria-selected='true'], [data-selected]) > * {
110
+ background: var(--sl-table-row-selected);
111
+ color: var(--sl-item-color-selected);
112
+ }
113
+
114
+ /* Footer: totals on the tray band */
115
+ .Table tfoot td {
116
+ font-family: var(--sl-font-subtitle-condense-font-family);
117
+ font-size: var(--sl-font-subtitle-condense-font-size);
118
+ font-weight: var(--sl-font-subtitle-condense-font-weight);
119
+ line-height: var(--sl-font-subtitle-condense-line-height);
120
+ letter-spacing: var(--sl-font-subtitle-condense-letter-spacing);
121
+ background: var(--sl-table-header-background);
122
+ border-top: var(--sl-stroke-default) solid var(--sl-table-border-color);
123
+ border-bottom: none;
124
+ }
125
+
126
+ /* A header that stays put while the body scrolls (the table's wrapper scrolls) */
127
+ .Table[data-sticky-header] thead th {
128
+ position: sticky;
129
+ top: 0;
130
+ z-index: var(--sl-z-index-docked);
131
+ }
132
+
133
+ /* Empty state: one cell spanning the columns */
134
+ .Table td[data-empty] {
135
+ height: auto;
136
+ padding-block: var(--sl-space-10);
137
+ color: var(--sl-text-tertiary);
138
+ text-align: center;
139
+ }
140
+
141
+ .Table tbody tr:has(> td[data-empty]):hover > * {
142
+ background: transparent;
143
+ color: var(--sl-text-tertiary);
144
+ }
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Tabs - Mojave Theme
3
3
  *
4
4
  * No component tokens. The divider, the selected line and color, hover and the disabled
@@ -31,11 +31,11 @@
31
31
  /* Tab: a transparent line under it that turns accent when selected. */
32
32
  .TabsTab {
33
33
  all: unset;
34
- font-family: var(--sl-font-base-font-family);
35
- font-size: var(--sl-font-base-font-size);
36
- font-weight: var(--sl-font-base-font-weight);
37
- line-height: var(--sl-font-base-line-height);
38
- letter-spacing: var(--sl-font-base-letter-spacing);
34
+ font-family: var(--sl-font-body-base-font-family);
35
+ font-size: var(--sl-font-body-base-font-size);
36
+ font-weight: var(--sl-font-body-base-font-weight);
37
+ line-height: var(--sl-font-body-base-line-height);
38
+ letter-spacing: var(--sl-font-body-base-letter-spacing);
39
39
  box-sizing: border-box;
40
40
  display: inline-flex;
41
41
  align-items: center;
@@ -54,11 +54,11 @@
54
54
  }
55
55
 
56
56
  .TabsTab[data-active] {
57
- font-family: var(--sl-font-base-selected-font-family);
58
- font-size: var(--sl-font-base-selected-font-size);
59
- font-weight: var(--sl-font-base-selected-font-weight);
60
- line-height: var(--sl-font-base-selected-line-height);
61
- letter-spacing: var(--sl-font-base-selected-letter-spacing);
57
+ font-family: var(--sl-font-selected-base-font-family);
58
+ font-size: var(--sl-font-selected-base-font-size);
59
+ font-weight: var(--sl-font-selected-base-font-weight);
60
+ line-height: var(--sl-font-selected-base-line-height);
61
+ letter-spacing: var(--sl-font-selected-base-letter-spacing);
62
62
  color: var(--sl-disclosure-selected-color);
63
63
  border-bottom-color: var(--sl-disclosure-indicator-color);
64
64
  }
@@ -85,11 +85,11 @@
85
85
 
86
86
  /* Panel */
87
87
  .TabsPanel {
88
- font-family: var(--sl-font-base-font-family);
89
- font-size: var(--sl-font-base-font-size);
90
- font-weight: var(--sl-font-base-font-weight);
91
- line-height: var(--sl-font-base-line-height);
92
- letter-spacing: var(--sl-font-base-letter-spacing);
88
+ font-family: var(--sl-font-body-base-font-family);
89
+ font-size: var(--sl-font-body-base-font-size);
90
+ font-weight: var(--sl-font-body-base-font-weight);
91
+ line-height: var(--sl-font-body-base-line-height);
92
+ letter-spacing: var(--sl-font-body-base-letter-spacing);
93
93
  padding: var(--sl-space-4);
94
94
  color: var(--sl-text-primary);
95
95
  }
@@ -101,28 +101,28 @@
101
101
 
102
102
  /* Sizes: the minimize tier for small tabs, more room for large ones. */
103
103
  .TabsRoot[data-size='sm'] .TabsTab {
104
- font-family: var(--sl-font-minimize-font-family);
105
- font-size: var(--sl-font-minimize-font-size);
106
- font-weight: var(--sl-font-minimize-font-weight);
107
- line-height: var(--sl-font-minimize-line-height);
108
- letter-spacing: var(--sl-font-minimize-letter-spacing);
104
+ font-family: var(--sl-font-body-minimize-font-family);
105
+ font-size: var(--sl-font-body-minimize-font-size);
106
+ font-weight: var(--sl-font-body-minimize-font-weight);
107
+ line-height: var(--sl-font-body-minimize-line-height);
108
+ letter-spacing: var(--sl-font-body-minimize-letter-spacing);
109
109
  padding: var(--sl-space-1-5) var(--sl-space-3);
110
110
  }
111
111
 
112
112
  .TabsRoot[data-size='sm'] .TabsTab[data-active] {
113
- font-family: var(--sl-font-minimize-selected-font-family);
114
- font-size: var(--sl-font-minimize-selected-font-size);
115
- font-weight: var(--sl-font-minimize-selected-font-weight);
116
- line-height: var(--sl-font-minimize-selected-line-height);
117
- letter-spacing: var(--sl-font-minimize-selected-letter-spacing);
113
+ font-family: var(--sl-font-selected-minimize-font-family);
114
+ font-size: var(--sl-font-selected-minimize-font-size);
115
+ font-weight: var(--sl-font-selected-minimize-font-weight);
116
+ line-height: var(--sl-font-selected-minimize-line-height);
117
+ letter-spacing: var(--sl-font-selected-minimize-letter-spacing);
118
118
  }
119
119
 
120
120
  .TabsRoot[data-size='sm'] .TabsPanel {
121
- font-family: var(--sl-font-minimize-font-family);
122
- font-size: var(--sl-font-minimize-font-size);
123
- font-weight: var(--sl-font-minimize-font-weight);
124
- line-height: var(--sl-font-minimize-line-height);
125
- letter-spacing: var(--sl-font-minimize-letter-spacing);
121
+ font-family: var(--sl-font-body-minimize-font-family);
122
+ font-size: var(--sl-font-body-minimize-font-size);
123
+ font-weight: var(--sl-font-body-minimize-font-weight);
124
+ line-height: var(--sl-font-body-minimize-line-height);
125
+ letter-spacing: var(--sl-font-body-minimize-letter-spacing);
126
126
  padding: var(--sl-space-3);
127
127
  }
128
128
 
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Toast - Mojave Theme
3
3
  *
4
4
  * A toast is a notice (tokens/semantic/notice.json) on the popup surface. A toast whose type
@@ -164,20 +164,20 @@
164
164
  ============================================ */
165
165
 
166
166
  .Title {
167
- font-family: var(--sl-font-maximize-md-font-family);
168
- font-size: var(--sl-font-maximize-md-font-size);
169
- font-weight: var(--sl-font-maximize-md-font-weight);
170
- line-height: var(--sl-font-maximize-md-line-height);
171
- letter-spacing: var(--sl-font-maximize-md-letter-spacing);
167
+ font-family: var(--sl-font-title-base-font-family);
168
+ font-size: var(--sl-font-title-base-font-size);
169
+ font-weight: var(--sl-font-title-base-font-weight);
170
+ line-height: var(--sl-font-title-base-line-height);
171
+ letter-spacing: var(--sl-font-title-base-letter-spacing);
172
172
  margin: 0;
173
173
  }
174
174
 
175
175
  .Description {
176
- font-family: var(--sl-font-base-font-family);
177
- font-size: var(--sl-font-base-font-size);
178
- font-weight: var(--sl-font-base-font-weight);
179
- line-height: var(--sl-font-base-line-height);
180
- letter-spacing: var(--sl-font-base-letter-spacing);
176
+ font-family: var(--sl-font-body-base-font-family);
177
+ font-size: var(--sl-font-body-base-font-size);
178
+ font-weight: var(--sl-font-body-base-font-weight);
179
+ line-height: var(--sl-font-body-base-line-height);
180
+ letter-spacing: var(--sl-font-body-base-letter-spacing);
181
181
  color: var(--notice-text, var(--sl-notice-description-color));
182
182
  margin: 0;
183
183
  margin-top: var(--sl-notice-text-gap);
@@ -1,7 +1,9 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Toggle - Mojave Theme
3
3
  * A toggle is a button that stays pressed: the same heights, padding, gap and
4
- * trigger text style as a button of the same size.
4
+ * trigger text style as a button of the same size. Pressed, it takes its emphasis level's
5
+ * pressed look (standard unless data-emphasis on it or its group says otherwise), so the
6
+ * brand's emphasis ladder decides how loud an "on" toggle is.
5
7
  */
6
8
 
7
9
  /* ============================================
@@ -17,11 +19,11 @@
17
19
  gap: var(--sl-gap-control);
18
20
  height: var(--sl-control-height-md);
19
21
  padding-inline: var(--sl-control-padding-inline);
20
- font-family: var(--sl-font-base-trigger-font-family);
21
- font-size: var(--sl-font-base-trigger-font-size);
22
- font-weight: var(--sl-font-base-trigger-font-weight);
23
- line-height: var(--sl-font-base-trigger-line-height);
24
- letter-spacing: var(--sl-font-base-trigger-letter-spacing);
22
+ font-family: var(--sl-font-trigger-base-font-family);
23
+ font-size: var(--sl-font-trigger-base-font-size);
24
+ font-weight: var(--sl-font-trigger-base-font-weight);
25
+ line-height: var(--sl-font-trigger-base-line-height);
26
+ letter-spacing: var(--sl-font-trigger-base-letter-spacing);
25
27
  color: var(--sl-text-primary);
26
28
  background: var(--sl-surface-base);
27
29
  border: var(--sl-stroke-default) solid var(--sl-border-default);
@@ -36,17 +38,17 @@
36
38
  border-color: var(--sl-border-strong);
37
39
  }
38
40
 
41
+ /* An outline or ghost level rests on no fill, so pressed reads from the active fill. */
39
42
  .Toggle[data-pressed],
40
43
  .Toggle[aria-pressed='true'] {
41
- background: var(--sl-interactive-tint-hover);
42
- color: var(--sl-interactive-default);
43
- border-color: var(--sl-border-accent);
44
+ background: var(--sl-e-bg-active);
45
+ color: var(--sl-e-fg);
46
+ border-color: var(--sl-e-border);
44
47
  }
45
48
 
46
49
  .Toggle[data-pressed]:hover:not([data-disabled]):not(:disabled),
47
50
  .Toggle[aria-pressed='true']:hover:not([data-disabled]):not(:disabled) {
48
- background: var(--sl-interactive-tint-strong);
49
- border-color: var(--sl-interactive-hover);
51
+ border-color: var(--sl-e-border-hover);
50
52
  }
51
53
 
52
54
  .Toggle:focus-visible {
@@ -69,22 +71,22 @@
69
71
  gap: var(--sl-gap-control-sm);
70
72
  height: var(--sl-control-height-sm);
71
73
  padding-inline: var(--sl-control-padding-inline-sm);
72
- font-family: var(--sl-font-condense-trigger-font-family);
73
- font-size: var(--sl-font-condense-trigger-font-size);
74
- font-weight: var(--sl-font-condense-trigger-font-weight);
75
- line-height: var(--sl-font-condense-trigger-line-height);
76
- letter-spacing: var(--sl-font-condense-trigger-letter-spacing);
74
+ font-family: var(--sl-font-trigger-condense-font-family);
75
+ font-size: var(--sl-font-trigger-condense-font-size);
76
+ font-weight: var(--sl-font-trigger-condense-font-weight);
77
+ line-height: var(--sl-font-trigger-condense-line-height);
78
+ letter-spacing: var(--sl-font-trigger-condense-letter-spacing);
77
79
  border-radius: var(--sl-radius-item);
78
80
  }
79
81
 
80
82
  .Toggle[data-size='lg'] {
81
83
  height: var(--sl-control-height-lg);
82
84
  padding-inline: var(--sl-control-padding-inline-lg);
83
- font-family: var(--sl-font-magnify-trigger-font-family);
84
- font-size: var(--sl-font-magnify-trigger-font-size);
85
- font-weight: var(--sl-font-magnify-trigger-font-weight);
86
- line-height: var(--sl-font-magnify-trigger-line-height);
87
- letter-spacing: var(--sl-font-magnify-trigger-letter-spacing);
85
+ font-family: var(--sl-font-trigger-magnify-font-family);
86
+ font-size: var(--sl-font-trigger-magnify-font-size);
87
+ font-weight: var(--sl-font-trigger-magnify-font-weight);
88
+ line-height: var(--sl-font-trigger-magnify-line-height);
89
+ letter-spacing: var(--sl-font-trigger-magnify-letter-spacing);
88
90
  border-radius: var(--sl-radius-surface);
89
91
  }
90
92
 
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Toggle Group - Mojave Theme
3
3
  *
4
4
  * No component tokens. The strip is the bar concept (tokens/semantic/bar.json); the
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Toolbar - Mojave Theme
3
3
  *
4
4
  * The strip is the bar concept (tokens/semantic/bar.json). Buttons, toggles, selects
@@ -32,11 +32,11 @@
32
32
 
33
33
  /* Link: secondary text that darkens on hover. */
34
34
  .ToolbarLink {
35
- font-family: var(--sl-font-base-font-family);
36
- font-size: var(--sl-font-base-font-size);
37
- font-weight: var(--sl-font-base-font-weight);
38
- line-height: var(--sl-font-base-line-height);
39
- letter-spacing: var(--sl-font-base-letter-spacing);
35
+ font-family: var(--sl-font-body-base-font-family);
36
+ font-size: var(--sl-font-body-base-font-size);
37
+ font-weight: var(--sl-font-body-base-font-weight);
38
+ line-height: var(--sl-font-body-base-line-height);
39
+ letter-spacing: var(--sl-font-body-base-letter-spacing);
40
40
  display: inline-flex;
41
41
  align-items: center;
42
42
  padding-inline: var(--sl-control-padding-inline-sm);
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Tooltip - Mojave Theme
3
3
  *
4
4
  * The inverse surface (surface.inverse, text.on-inverse-surface) with condense text, so a tooltip
@@ -15,11 +15,11 @@
15
15
  }
16
16
 
17
17
  .TooltipPopup {
18
- font-family: var(--sl-font-condense-font-family);
19
- font-size: var(--sl-font-condense-font-size);
20
- font-weight: var(--sl-font-condense-font-weight);
21
- line-height: var(--sl-font-condense-line-height);
22
- letter-spacing: var(--sl-font-condense-letter-spacing);
18
+ font-family: var(--sl-font-body-condense-font-family);
19
+ font-size: var(--sl-font-body-condense-font-size);
20
+ font-weight: var(--sl-font-body-condense-font-weight);
21
+ line-height: var(--sl-font-body-condense-line-height);
22
+ letter-spacing: var(--sl-font-body-condense-letter-spacing);
23
23
  transform-origin: var(--transform-origin);
24
24
  transition:
25
25
  opacity var(--sl-popup-animation-duration) var(--sl-popup-animation-easing),
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Loomiere for Base UI: component styles. Brand-free: every value is a --sl- variable from a
3
3
  Loomiere theme. Load the theme first:
4
4
  @import '<your theme>/tokens.css';
@@ -26,7 +26,6 @@
26
26
  @import './components/Dialog.css';
27
27
  @import './components/Drawer.css';
28
28
  @import './components/Field.css';
29
- @import './components/IconButton.css';
30
29
  @import './components/Fieldset.css';
31
30
  @import './components/Form.css';
32
31
  @import './components/Input.css';
@@ -45,6 +44,7 @@
45
44
  @import './components/Separator.css';
46
45
  @import './components/Slider.css';
47
46
  @import './components/Switch.css';
47
+ @import './components/Table.css';
48
48
  @import './components/Tabs.css';
49
49
  @import './components/Toast.css';
50
50
  @import './components/Toggle.css';
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Focus, invalid, contrast — requires theme tokens (after theme-accessibility.css). */
3
3
 
4
4
  :focus-visible {
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Accessibility — base rules (no theme color dependencies). Theme-specific focus/invalid: accessibility-theme.css */
3
3
 
4
4
  /* Remove default focus; keyboard focus styled in accessibility-theme.css */
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* CSS Reset - Mojave Theme */
3
3
 
4
4
  /* ============================================
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* CSS Reset - Mojave Theme */
3
3
 
4
4
  /* ============================================
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.3.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.4.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Loomiere for Base UI: component styles for Tailwind CSS v4. Load Tailwind and the theme first:
3
3
  @import 'tailwindcss';
4
4
  @import '<your theme>/tokens.css';
@@ -29,7 +29,6 @@
29
29
  @import './components/Dialog.css' layer(components);
30
30
  @import './components/Drawer.css' layer(components);
31
31
  @import './components/Field.css' layer(components);
32
- @import './components/IconButton.css' layer(components);
33
32
  @import './components/Fieldset.css' layer(components);
34
33
  @import './components/Form.css' layer(components);
35
34
  @import './components/Input.css' layer(components);
@@ -48,6 +47,7 @@
48
47
  @import './components/Separator.css' layer(components);
49
48
  @import './components/Slider.css' layer(components);
50
49
  @import './components/Switch.css' layer(components);
50
+ @import './components/Table.css' layer(components);
51
51
  @import './components/Tabs.css' layer(components);
52
52
  @import './components/Toast.css' layer(components);
53
53
  @import './components/Toggle.css' layer(components);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scattered-light/loomiere-base-ui",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Base UI components styled by any Loomiere theme. Brand-free: every value is a --sl- variable.",
5
5
  "keywords": ["base-ui", "react", "components", "design-tokens", "loomiere"],
6
6
  "repository": {
@@ -49,6 +49,6 @@
49
49
  "react-dom": "^18.0.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@scattered-light/loomiere": "0.3.0"
52
+ "@scattered-light/loomiere": "0.4.0"
53
53
  }
54
54
  }
@@ -1,31 +0,0 @@
1
- # IconButton
2
-
3
- The Base UI Button styled by the theme. A small, quiet icon-only button: the icon-button concept (tokens/semantic/icon-button.json), the same look as the X that closes a dialog or toast, as a part of its own. For calendar arrows, row actions and clear buttons, where a Button would be too loud. No component tokens.
4
-
5
- Use `Loomiere.IconButton`, this package's wrapper: it puts the class names on for you (`import { IconButton } from '@scattered-light/loomiere-base-ui'` in an app). The bare Base UI part is `Loomiere.Base.Button`.
6
-
7
- Base UI docs: https://base-ui.com/react/components/button
8
-
9
- ## Classes
10
-
11
- | Class | Data attributes it answers to |
12
- |---|---|
13
- | `IconButton` | |
14
-
15
- Base UI sets the state attributes (`data-checked`, `data-open`, `data-disabled`...) itself. Set `data-size`, `data-emphasis`, `data-variant` and `data-color` yourself; `data-color` takes any palette name (`primary`, `secondary`, `error`...) and repaints the part in it.
16
-
17
- ## Example
18
-
19
- From the IconButton stories (`Default`):
20
-
21
- ```tsx
22
- export const Default: Story = {
23
- render: () => (
24
- <IconButton type="button" aria-label="Next month">
25
- <Icon name="chevron_right" />
26
- </IconButton>
27
- ),
28
- };
29
- ```
30
-
31
- The preview also shows `CalendarHeader`, `RowActions`, `Disabled`.
@@ -1,19 +0,0 @@
1
- <!-- @dsCard group="Actions" height=480 subtitle="Default / CalendarHeader / RowActions / Disabled" -->
2
- <!doctype html>
3
- <html>
4
- <head>
5
- <meta charset="utf-8">
6
- <style>
7
- body { margin: 0; padding: var(--sl-space-4, 16px); background: var(--sl-surface-canvas); color: var(--sl-text-primary); }
8
- #root { display: grid; gap: var(--sl-space-5, 20px); }
9
- .ds-story-name { margin: 0 0 var(--sl-space-2, 8px); font: var(--sl-font-minimize-label-font, 500 10px sans-serif); color: var(--sl-text-tertiary); text-transform: uppercase; letter-spacing: 0.06em; }
10
- </style>
11
- </head>
12
- <body>
13
- <div id="root"></div>
14
- <script>
15
- (()=>{var x=Object.create;var m=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var I=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),v=(e,t)=>{for(var o in t)m(e,o,{get:t[o],enumerable:!0})},E=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of g(t))!w.call(e,a)&&a!==o&&m(e,a,{get:()=>t[a],enumerable:!(s=f(t,a))||s.enumerable});return e};var B=(e,t,o)=>(o=e!=null?x(h(e)):{},E(t||!e||!e.__esModule?m(o,"default",{value:e,enumerable:!0}):o,e));var u=I((F,y)=>{y.exports=window.Loomiere});var p={};v(p,{CalendarHeader:()=>N,Default:()=>D,Disabled:()=>A,RowActions:()=>R,default:()=>d});var r=B(u(),1);var i=window.React;function n(e,t,o){let{children:s,...a}=t||{};return o!==void 0&&(a.key=o),s===void 0?i.createElement(e,a):Array.isArray(s)?i.createElement(e,a,...s):i.createElement(e,a,s)}var M=i.Fragment;var S={title:"Components/Lib/IconButton",component:r.IconButton,parameters:{layout:"centered"},tags:["autodocs","ds:lib"]},d=S,c=({name:e})=>n("span",{className:"material-symbols-outlined","aria-hidden":"true",children:e}),D={render:()=>n(r.IconButton,{type:"button","aria-label":"Next month",children:n(c,{name:"chevron_right"})})},N={render:()=>n("div",{style:{display:"flex",alignItems:"center",gap:"var(--sl-space-2)",width:"280px"},children:[n(r.IconButton,{type:"button","aria-label":"Previous month",children:n(c,{name:"chevron_left"})}),n("span",{className:"text-style-base-subtitle",style:{flexGrow:1,textAlign:"center"},children:"October 2026"}),n(r.IconButton,{type:"button","aria-label":"Next month",children:n(c,{name:"chevron_right"})})]})},R={render:()=>n("div",{style:{display:"flex",gap:"var(--sl-space-1)"},children:[n(r.IconButton,{type:"button","aria-label":"Edit",children:n(c,{name:"edit"})}),n(r.IconButton,{type:"button","aria-label":"Duplicate",children:n(c,{name:"content_copy"})}),n(r.IconButton,{type:"button","aria-label":"Delete",children:n(c,{name:"delete"})})]})},A={render:()=>n(r.IconButton,{type:"button","aria-label":"Next month",disabled:!0,children:n(c,{name:"chevron_right"})})};var l=window.React,b=d||{},_=["Default","CalendarHeader","RowActions","Disabled"];function j({id:e}){let t=p[e],o={...b.args||{},...t.args||{}};return(t.render||(a=>l.createElement(b.component,a)))(o,{args:o,id:e,name:e})}var O=_.map(e=>l.createElement("section",{key:e,className:"ds-story"},l.createElement("p",{className:"ds-story-name"},e.replace(/([a-z])([A-Z])/g,"$1 $2")),l.createElement("div",{className:"ds-story-body"},l.createElement(j,{id:e}))));window.ReactDOM.createRoot(document.getElementById("root")).render(l.createElement(l.Fragment,null,O));})();
16
-
17
- </script>
18
- </body>
19
- </html>