@scattered-light/loomiere-base-ui 0.15.6 → 0.17.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 (79) hide show
  1. package/README.md +16 -1
  2. package/dist/{chunk-RLXKWWZG.js → chunk-DBNGJCTF.js} +27 -3
  3. package/dist/chunk-DBNGJCTF.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/StatCard/README.md +52 -0
  7. package/dist/design-system/components/StatCard/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 +183 -62
  11. package/dist/{index-BlPgd6jW.d.ts → index-C-lxJXk8.d.ts} +27 -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 +4 -2
  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/PickerSplit.css +1 -1
  66. package/dist/styles/custom/Sheet.css +1 -1
  67. package/dist/styles/custom/SideNav.css +1 -1
  68. package/dist/styles/custom/Splitter.css +1 -1
  69. package/dist/styles/custom/StatCard.css +118 -0
  70. package/dist/styles/custom/StatFigure.css +1 -1
  71. package/dist/styles/custom/Table.css +1 -1
  72. package/dist/styles/index.css +2 -1
  73. package/dist/styles/reset/accessibility.css +1 -1
  74. package/dist/styles/reset/reset-accessibility.css +1 -1
  75. package/dist/styles/reset/reset-tailwind.css +1 -1
  76. package/dist/styles/reset/reset.css +1 -1
  77. package/dist/styles/tailwind.css +2 -1
  78. package/package.json +2 -2
  79. package/dist/chunk-RLXKWWZG.js.map +0 -1
@@ -0,0 +1,118 @@
1
+ /* @scattered-light/loomiere-base-ui 0.17.0 · styles for @base-ui/react 1.9.0 */
2
+ /* StatCard
3
+ *
4
+ * A card for one thing a page lists: a name (the heading), a caption, and a row of StatFigures
5
+ * ruled off under them. With data-interactive the title is a link or a button and its ::after
6
+ * covers the card, so the whole card is the target and the title names it. The hover fill and
7
+ * the focus ring follow the card, not just the title.
8
+ * Tokens: stat-card.* (tokens/component/stat-card.json).
9
+ */
10
+
11
+ .StatCard {
12
+ position: relative;
13
+ box-sizing: border-box;
14
+ display: flex;
15
+ flex-direction: column;
16
+ min-width: 0;
17
+ background: var(--sl-stat-card-background);
18
+ border: var(--sl-stat-card-border-width) solid var(--sl-stat-card-border-color);
19
+ border-top: var(--sl-stat-card-rule-width) solid var(--sl-stat-card-rule-color);
20
+ border-radius: var(--sl-stat-card-radius);
21
+ }
22
+
23
+ .StatCard[data-interactive]:hover {
24
+ background: var(--sl-stat-card-background-hover);
25
+ }
26
+
27
+ .StatCard[data-interactive]:has(.StatCardLink:focus-visible) {
28
+ outline: var(--sl-focus-outline);
29
+ outline-offset: 2px;
30
+ }
31
+
32
+ .StatCardHeader {
33
+ display: flex;
34
+ align-items: flex-start;
35
+ gap: var(--sl-space-2);
36
+ padding: var(--sl-stat-card-header-padding-block) var(--sl-stat-card-padding-inline);
37
+ }
38
+
39
+ .StatCardHeading {
40
+ flex: 1;
41
+ min-width: 0;
42
+ }
43
+
44
+ /* A mark at the top right, set in the caption's figures style but in the accent: "2 NEW". */
45
+ .StatCardTag {
46
+ font-family: var(--sl-font-figures-condense-font-family);
47
+ font-size: var(--sl-font-figures-condense-font-size);
48
+ font-weight: var(--sl-font-figures-condense-font-weight);
49
+ line-height: var(--sl-font-figures-condense-line-height);
50
+ letter-spacing: var(--sl-font-figures-condense-letter-spacing);
51
+ font-variant-numeric: var(--sl-font-figures-condense-font-variant-numeric);
52
+ flex: none;
53
+ font-weight: 600;
54
+ text-transform: uppercase;
55
+ color: var(--sl-stat-figure-figure-color-accent);
56
+ }
57
+
58
+ .StatCardTitle {
59
+ font-family: var(--sl-font-title-magnify-font-family);
60
+ font-size: var(--sl-font-title-magnify-font-size);
61
+ font-weight: var(--sl-font-title-magnify-font-weight);
62
+ line-height: var(--sl-font-title-magnify-line-height);
63
+ letter-spacing: var(--sl-font-title-magnify-letter-spacing);
64
+ margin: 0;
65
+ }
66
+
67
+ .StatCardCaption {
68
+ font-family: var(--sl-font-figures-condense-font-family);
69
+ font-size: var(--sl-font-figures-condense-font-size);
70
+ font-weight: var(--sl-font-figures-condense-font-weight);
71
+ line-height: var(--sl-font-figures-condense-line-height);
72
+ letter-spacing: var(--sl-font-figures-condense-letter-spacing);
73
+ font-variant-numeric: var(--sl-font-figures-condense-font-variant-numeric);
74
+ margin: 0;
75
+ text-transform: uppercase;
76
+ color: var(--sl-stat-card-caption-color);
77
+ }
78
+
79
+ /* The title's control: bare text that stretches over the whole card. */
80
+ .StatCardLink {
81
+ all: unset;
82
+ cursor: pointer;
83
+ }
84
+
85
+ .StatCardLink::after {
86
+ content: '';
87
+ position: absolute;
88
+ inset: 0;
89
+ }
90
+
91
+ .StatCardLink:focus-visible {
92
+ outline: none;
93
+ }
94
+
95
+ .StatCardFacts {
96
+ display: grid;
97
+ margin-top: auto;
98
+ border-top: var(--sl-stat-card-border-width) solid var(--sl-stat-card-rule-color);
99
+ }
100
+
101
+ .StatCardFacts > * {
102
+ padding: var(--sl-stat-card-facts-padding-block) var(--sl-stat-card-padding-inline);
103
+ border-inline-start: var(--sl-stat-card-border-width) solid var(--sl-stat-card-facts-divider-color);
104
+ }
105
+
106
+ .StatCardFacts > :first-child {
107
+ border-inline-start: 0;
108
+ }
109
+
110
+ .StatCardFooter {
111
+ font-family: var(--sl-font-body-condense-font-family);
112
+ font-size: var(--sl-font-body-condense-font-size);
113
+ font-weight: var(--sl-font-body-condense-font-weight);
114
+ line-height: var(--sl-font-body-condense-line-height);
115
+ letter-spacing: var(--sl-font-body-condense-letter-spacing);
116
+ padding: var(--sl-stat-card-header-padding-block) var(--sl-stat-card-padding-inline);
117
+ border-top: var(--sl-stat-card-border-width) solid var(--sl-stat-card-footer-border-color);
118
+ }
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.15.6 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.17.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.15.6 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.17.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.15.6 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.17.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';
@@ -63,6 +63,7 @@
63
63
  @import './custom/EditableList.css';
64
64
  @import './custom/Sheet.css';
65
65
  @import './custom/StatFigure.css';
66
+ @import './custom/StatCard.css';
66
67
  @import './custom/DescriptionList.css';
67
68
  @import './custom/AppBar.css';
68
69
  @import './custom/PickerButton.css';
@@ -1,4 +1,4 @@
1
- /* @scattered-light/loomiere-base-ui 0.15.6 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.17.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.15.6 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.17.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.15.6 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.17.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.15.6 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.17.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.15.6 · styles for @base-ui/react 1.9.0 */
1
+ /* @scattered-light/loomiere-base-ui 0.17.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';
@@ -66,6 +66,7 @@
66
66
  @import './custom/EditableList.css' layer(components);
67
67
  @import './custom/Sheet.css' layer(components);
68
68
  @import './custom/StatFigure.css' layer(components);
69
+ @import './custom/StatCard.css' layer(components);
69
70
  @import './custom/DescriptionList.css' layer(components);
70
71
  @import './custom/AppBar.css' layer(components);
71
72
  @import './custom/PickerButton.css' layer(components);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scattered-light/loomiere-base-ui",
3
- "version": "0.15.6",
3
+ "version": "0.17.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.15.6",
79
+ "@scattered-light/loomiere": "0.17.0",
80
80
  "@tanstack/react-table": "^9.3.1"
81
81
  }
82
82
  }