@scattered-light/loomiere-base-ui 0.9.0 → 0.11.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 (77) hide show
  1. package/README.md +16 -1
  2. package/dist/{chunk-LQWPDLLQ.js → chunk-2NAYVQ2U.js} +54 -3
  3. package/dist/chunk-2NAYVQ2U.js.map +1 -0
  4. package/dist/custom/index.d.ts +1 -1
  5. package/dist/custom/index.js +1 -1
  6. package/dist/design-system/components/SideNav/README.md +73 -0
  7. package/dist/design-system/components/SideNav/preview.html +19 -0
  8. package/dist/design-system/components/bundle.js +7 -7
  9. package/dist/design-system/components/index.d.ts +1 -1
  10. package/dist/design-system/components/styles.css +242 -59
  11. package/dist/{index-DdHpYalU.d.ts → index-D4DT1VE-.d.ts} +49 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.js +1 -1
  14. package/dist/styles/components/Accordion.css +1 -1
  15. package/dist/styles/components/AlertDialog.css +1 -1
  16. package/dist/styles/components/Autocomplete.css +1 -1
  17. package/dist/styles/components/Avatar.css +1 -1
  18. package/dist/styles/components/Button.css +1 -1
  19. package/dist/styles/components/Checkbox.css +1 -1
  20. package/dist/styles/components/CheckboxGroup.css +1 -1
  21. package/dist/styles/components/Collapsible.css +1 -1
  22. package/dist/styles/components/Combobox.css +1 -1
  23. package/dist/styles/components/ContextMenu.css +1 -1
  24. package/dist/styles/components/Dialog.css +1 -1
  25. package/dist/styles/components/Drawer.css +1 -1
  26. package/dist/styles/components/Field.css +1 -1
  27. package/dist/styles/components/Fieldset.css +1 -1
  28. package/dist/styles/components/Form.css +1 -1
  29. package/dist/styles/components/Input.css +1 -1
  30. package/dist/styles/components/Menu.css +1 -1
  31. package/dist/styles/components/Menubar.css +1 -1
  32. package/dist/styles/components/Meter.css +1 -1
  33. package/dist/styles/components/NavigationMenu.css +1 -1
  34. package/dist/styles/components/NumberField.css +1 -1
  35. package/dist/styles/components/OTPField.css +1 -1
  36. package/dist/styles/components/Popover.css +1 -1
  37. package/dist/styles/components/PreviewCard.css +1 -1
  38. package/dist/styles/components/Progress.css +1 -1
  39. package/dist/styles/components/Radio.css +1 -1
  40. package/dist/styles/components/ScrollArea.css +1 -1
  41. package/dist/styles/components/Select.css +1 -1
  42. package/dist/styles/components/Separator.css +1 -1
  43. package/dist/styles/components/Slider.css +1 -1
  44. package/dist/styles/components/Switch.css +1 -1
  45. package/dist/styles/components/Tabs.css +1 -1
  46. package/dist/styles/components/Toast.css +1 -1
  47. package/dist/styles/components/Toggle.css +1 -1
  48. package/dist/styles/components/ToggleGroup.css +1 -1
  49. package/dist/styles/components/Toolbar.css +1 -1
  50. package/dist/styles/components/Tooltip.css +1 -1
  51. package/dist/styles/custom/AppBar.css +1 -1
  52. package/dist/styles/custom/Badge.css +1 -1
  53. package/dist/styles/custom/Collection.css +1 -1
  54. package/dist/styles/custom/CollectionPagination.css +1 -1
  55. package/dist/styles/custom/CollectionToolbar.css +1 -1
  56. package/dist/styles/custom/DataList.css +1 -1
  57. package/dist/styles/custom/DataTable.css +1 -1
  58. package/dist/styles/custom/DatePicker.css +1 -1
  59. package/dist/styles/custom/DescriptionList.css +1 -1
  60. package/dist/styles/custom/EditableList.css +1 -1
  61. package/dist/styles/custom/EmptyState.css +1 -1
  62. package/dist/styles/custom/ListDetail.css +1 -1
  63. package/dist/styles/custom/MoneyField.css +1 -1
  64. package/dist/styles/custom/PickerButton.css +1 -1
  65. package/dist/styles/custom/Sheet.css +1 -1
  66. package/dist/styles/custom/SideNav.css +182 -0
  67. package/dist/styles/custom/Splitter.css +1 -1
  68. package/dist/styles/custom/StatFigure.css +1 -1
  69. package/dist/styles/custom/Table.css +1 -1
  70. package/dist/styles/index.css +2 -1
  71. package/dist/styles/reset/accessibility.css +1 -1
  72. package/dist/styles/reset/reset-accessibility.css +1 -1
  73. package/dist/styles/reset/reset-tailwind.css +1 -1
  74. package/dist/styles/reset/reset.css +1 -1
  75. package/dist/styles/tailwind.css +2 -1
  76. package/package.json +2 -2
  77. package/dist/chunk-LQWPDLLQ.js.map +0 -1
@@ -0,0 +1,182 @@
1
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
2
+ /* SideNav
3
+ *
4
+ * The column of links down the side of a workspace. Rows are ruled apart with a hairline; the
5
+ * current row (aria-current="page") sits on the raised surface with a rule under it in the
6
+ * working-paper ink; counts are figures; group headings are caps labels. SideNavToggle is a
7
+ * small tab-shaped handle on the column's edge, whose chevron turns with the state. The parent
8
+ * sets the width and must not clip the toggle (overflow: visible), since it hangs over the edge.
9
+ * Tokens: side-nav.* (tokens/component/side-nav.json).
10
+ */
11
+
12
+ .SideNav {
13
+ position: relative;
14
+ box-sizing: border-box;
15
+ display: flex;
16
+ flex-direction: column;
17
+ height: 100%;
18
+ min-width: 0;
19
+ padding-block: var(--sl-space-4);
20
+ background: var(--sl-side-nav-background);
21
+ border-inline-end: var(--sl-stroke-default) solid var(--sl-side-nav-border-color);
22
+ }
23
+
24
+ .SideNav[data-collapsed] {
25
+ min-width: var(--sl-side-nav-collapsed-width);
26
+ }
27
+
28
+ /* Collapsed: only the toggle stays. */
29
+ .SideNav[data-collapsed] > :not(.SideNavToggle) {
30
+ display: none;
31
+ }
32
+
33
+ .SideNavItem {
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
+ box-sizing: border-box;
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: space-between;
43
+ gap: var(--sl-side-nav-item-gap);
44
+ min-height: var(--sl-side-nav-item-height);
45
+ padding-inline: var(--sl-side-nav-item-padding-inline);
46
+ color: var(--sl-side-nav-item-color);
47
+ text-decoration: none;
48
+ border-bottom: var(--sl-stroke-default) solid var(--sl-side-nav-item-divider-color);
49
+ cursor: pointer;
50
+ transition: background var(--sl-duration-fast) var(--sl-easing-default);
51
+ }
52
+
53
+ .SideNavItemText {
54
+ display: flex;
55
+ flex-direction: column;
56
+ min-width: 0;
57
+ }
58
+
59
+ .SideNavItemLabel {
60
+ overflow: hidden;
61
+ text-overflow: ellipsis;
62
+ white-space: nowrap;
63
+ }
64
+
65
+ .SideNavItemHint {
66
+ font-family: var(--sl-font-body-minimize-font-family);
67
+ font-size: var(--sl-font-body-minimize-font-size);
68
+ font-weight: var(--sl-font-body-minimize-font-weight);
69
+ line-height: var(--sl-font-body-minimize-line-height);
70
+ letter-spacing: var(--sl-font-body-minimize-letter-spacing);
71
+ color: var(--sl-side-nav-item-color-disabled);
72
+ }
73
+
74
+ .SideNavItem:hover:not([data-current]):not([data-disabled]) {
75
+ background: var(--sl-side-nav-item-background-hover);
76
+ }
77
+
78
+ .SideNavItem:focus-visible {
79
+ outline: var(--sl-focus-outline);
80
+ outline-offset: var(--sl-focus-outline-offset-inset);
81
+ }
82
+
83
+ .SideNavItem[data-current] {
84
+ background: var(--sl-side-nav-item-background-current);
85
+ font-weight: var(--sl-font-weight-semibold);
86
+ box-shadow: inset 0 calc(-1 * var(--sl-side-nav-indicator-width)) 0 var(--sl-side-nav-indicator-color);
87
+ }
88
+
89
+ .SideNavItem[data-disabled] {
90
+ color: var(--sl-side-nav-item-color-disabled);
91
+ cursor: default;
92
+ }
93
+
94
+ .SideNavItemCount {
95
+ flex: none;
96
+ font-family: var(--sl-font-figures-condense-font-family);
97
+ font-variant-numeric: var(--sl-font-figures-condense-font-variant-numeric);
98
+ font-size: var(--sl-font-figures-condense-font-size);
99
+ font-weight: var(--sl-font-weight-semibold);
100
+ line-height: var(--sl-font-figures-condense-line-height);
101
+ color: var(--sl-side-nav-count-color);
102
+ }
103
+
104
+ .SideNavItemCount[data-tone='quiet'] {
105
+ color: var(--sl-side-nav-count-color-quiet);
106
+ }
107
+
108
+ .SideNavGroupLabel {
109
+ font-family: var(--sl-font-caps-condense-font-family);
110
+ font-size: var(--sl-font-caps-condense-font-size);
111
+ font-weight: var(--sl-font-caps-condense-font-weight);
112
+ line-height: var(--sl-font-caps-condense-line-height);
113
+ letter-spacing: var(--sl-font-caps-condense-letter-spacing);
114
+ text-transform: var(--sl-font-caps-condense-text-transform);
115
+ padding-top: var(--sl-side-nav-group-padding-top);
116
+ padding-bottom: var(--sl-space-1-5);
117
+ padding-inline: var(--sl-side-nav-item-padding-inline);
118
+ color: var(--sl-side-nav-group-label-color);
119
+ }
120
+
121
+ /* ============================================
122
+ COLLAPSE BUTTON
123
+ ============================================ */
124
+
125
+ .SideNavToggle {
126
+ all: unset;
127
+ box-sizing: border-box;
128
+ position: absolute;
129
+ z-index: 1;
130
+ top: var(--sl-side-nav-toggle-offset);
131
+ inset-inline-end: calc(-0.5 * var(--sl-side-nav-toggle-width));
132
+ display: inline-flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ width: var(--sl-side-nav-toggle-width);
136
+ height: var(--sl-side-nav-toggle-height);
137
+ border-radius: var(--sl-side-nav-toggle-radius);
138
+ background: var(--sl-side-nav-toggle-background);
139
+ border: var(--sl-stroke-default) solid var(--sl-side-nav-toggle-border-color);
140
+ color: var(--sl-side-nav-toggle-border-color);
141
+ cursor: pointer;
142
+ transition: color var(--sl-duration-fast) var(--sl-easing-default),
143
+ background var(--sl-duration-fast) var(--sl-easing-default),
144
+ border-color var(--sl-duration-fast) var(--sl-easing-default);
145
+ }
146
+
147
+ .SideNavToggle:hover {
148
+ color: var(--sl-side-nav-toggle-background);
149
+ background: var(--sl-side-nav-toggle-border-color);
150
+ }
151
+
152
+ .SideNavToggle:focus-visible {
153
+ outline: var(--sl-focus-outline);
154
+ outline-offset: var(--sl-focus-outline-offset);
155
+ }
156
+
157
+ .SideNavToggleIcon {
158
+ width: var(--sl-icon-size-minimize);
159
+ height: var(--sl-icon-size-minimize);
160
+ transition: transform var(--sl-duration-normal) var(--sl-easing-default);
161
+ }
162
+
163
+ /* The chevron points the way the column will go: left to collapse, right to expand. */
164
+ .SideNavToggle[aria-expanded='false'] .SideNavToggleIcon {
165
+ transform: rotate(180deg);
166
+ }
167
+
168
+ [dir='rtl'] .SideNavToggleIcon {
169
+ transform: scaleX(-1);
170
+ }
171
+
172
+ [dir='rtl'] .SideNavToggle[aria-expanded='false'] .SideNavToggleIcon {
173
+ transform: scaleX(-1) rotate(180deg);
174
+ }
175
+
176
+ @media (prefers-reduced-motion: reduce) {
177
+ .SideNavToggleIcon,
178
+ .SideNavItem,
179
+ .SideNavToggle {
180
+ transition: none;
181
+ }
182
+ }
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Splitter
3
3
  *
4
4
  * Two or more panels and a handle between them. Not a Base UI part. It follows the
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* StatFigure
3
3
  *
4
4
  * One large figure with a caps label above and a caption under it. The label is
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
2
2
  /* Table - Mojave Theme
3
3
  *
4
4
  * Base UI has no table, so this styles the native <table class="Table"> elements with the
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.11.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';
@@ -66,3 +66,4 @@
66
66
  @import './custom/DescriptionList.css';
67
67
  @import './custom/AppBar.css';
68
68
  @import './custom/PickerButton.css';
69
+ @import './custom/SideNav.css';
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.11.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.9.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.11.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.9.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.11.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.9.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.11.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.9.0 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.11.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';
@@ -69,3 +69,4 @@
69
69
  @import './custom/DescriptionList.css' layer(components);
70
70
  @import './custom/AppBar.css' layer(components);
71
71
  @import './custom/PickerButton.css' layer(components);
72
+ @import './custom/SideNav.css' layer(components);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scattered-light/loomiere-base-ui",
3
- "version": "0.9.0",
3
+ "version": "0.11.0",
4
4
  "description": "Base UI components styled by any Loomiere theme. Brand-free: every value is a --sl- variable.",
5
5
  "keywords": [
6
6
  "base-ui",
@@ -76,7 +76,7 @@
76
76
  }
77
77
  },
78
78
  "devDependencies": {
79
- "@scattered-light/loomiere": "0.9.0",
79
+ "@scattered-light/loomiere": "0.11.0",
80
80
  "@tanstack/react-table": "^9.3.1"
81
81
  }
82
82
  }