@lostgradient/cinder 0.12.0 → 0.12.1

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 (70) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/components.json +3 -2
  3. package/dist/components/accordion/index.js +14 -11
  4. package/dist/components/accordion-item/accordion-item.css +20 -7
  5. package/dist/components/accordion-item/accordion-item.schema.js +5 -1
  6. package/dist/components/accordion-item/accordion-item.types.d.ts +4 -0
  7. package/dist/components/accordion-item/accordion-item.variables.js +13 -2
  8. package/dist/components/accordion-item/index.js +14 -11
  9. package/dist/components/action-row/action-row.css +20 -9
  10. package/dist/components/action-row/action-row.schema.js +5 -1
  11. package/dist/components/action-row/action-row.types.d.ts +43 -0
  12. package/dist/components/action-row/action-row.variables.js +12 -2
  13. package/dist/components/chat/chat.svelte.d.ts +1 -0
  14. package/dist/components/side-navigation/side-navigation.css +2 -1
  15. package/dist/components/side-navigation/side-navigation.schema.js +9 -6
  16. package/dist/components/side-navigation/side-navigation.types.d.ts +11 -0
  17. package/dist/components/side-navigation/side-navigation.variables.js +2 -2
  18. package/dist/components/stat/stat.css +16 -8
  19. package/dist/components/stat/stat.schema.js +5 -1
  20. package/dist/components/stat/stat.types.d.ts +19 -0
  21. package/dist/components/stat/stat.variables.js +11 -2
  22. package/dist/components/stat-group/stat-group.css +7 -4
  23. package/dist/components/stat-group/stat-group.schema.js +5 -1
  24. package/dist/components/stat-group/stat-group.types.d.ts +27 -0
  25. package/dist/components/stat-group/stat-group.variables.js +6 -2
  26. package/dist/index.js +14 -11
  27. package/dist/server/components/accordion/index.js +2 -2
  28. package/dist/server/components/accordion-item/index.js +2 -2
  29. package/dist/server/index.js +3 -3
  30. package/dist/server/{index.server-cf6pxeyg.js → index.server-0rzd71e0.js} +1 -1
  31. package/dist/server/{index.server-y83kqayt.js → index.server-h3nzp8g8.js} +1 -1
  32. package/dist/server/index.server-jwvxxjvc.js +50 -0
  33. package/package.json +1 -1
  34. package/src/components/accordion/accordion.examples.json +6 -0
  35. package/src/components/accordion-item/accordion-item.css +20 -7
  36. package/src/components/accordion-item/accordion-item.schema.json +4 -0
  37. package/src/components/accordion-item/accordion-item.schema.ts +4 -0
  38. package/src/components/accordion-item/accordion-item.svelte +9 -7
  39. package/src/components/accordion-item/accordion-item.types.ts +4 -0
  40. package/src/components/accordion-item/accordion-item.variables.json +12 -1
  41. package/src/components/accordion-item/accordion-item.variables.ts +12 -1
  42. package/src/components/action-row/action-row.css +20 -9
  43. package/src/components/action-row/action-row.examples.json +6 -0
  44. package/src/components/action-row/action-row.schema.json +4 -0
  45. package/src/components/action-row/action-row.schema.ts +4 -0
  46. package/src/components/action-row/action-row.types.ts +44 -0
  47. package/src/components/action-row/action-row.variables.json +11 -1
  48. package/src/components/action-row/action-row.variables.ts +11 -1
  49. package/src/components/chat/chat.examples.json +6 -0
  50. package/src/components/side-navigation/side-navigation.css +2 -1
  51. package/src/components/side-navigation/side-navigation.examples.json +6 -0
  52. package/src/components/side-navigation/side-navigation.schema.json +8 -5
  53. package/src/components/side-navigation/side-navigation.schema.ts +8 -5
  54. package/src/components/side-navigation/side-navigation.types.ts +12 -0
  55. package/src/components/side-navigation/side-navigation.variables.json +1 -1
  56. package/src/components/side-navigation/side-navigation.variables.ts +1 -1
  57. package/src/components/stat/stat.css +16 -8
  58. package/src/components/stat/stat.schema.json +4 -0
  59. package/src/components/stat/stat.schema.ts +4 -0
  60. package/src/components/stat/stat.types.ts +20 -0
  61. package/src/components/stat/stat.variables.json +10 -1
  62. package/src/components/stat/stat.variables.ts +10 -1
  63. package/src/components/stat-group/stat-group.css +7 -4
  64. package/src/components/stat-group/stat-group.examples.json +6 -0
  65. package/src/components/stat-group/stat-group.schema.json +4 -0
  66. package/src/components/stat-group/stat-group.schema.ts +4 -0
  67. package/src/components/stat-group/stat-group.types.ts +28 -0
  68. package/src/components/stat-group/stat-group.variables.json +5 -1
  69. package/src/components/stat-group/stat-group.variables.ts +5 -1
  70. package/dist/server/index.server-hfx487zj.js +0 -42
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @lostgradient/cinder
2
2
 
3
+ ## 0.12.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#737](https://github.com/stevekinney/cinder/pull/737) [`3600db8`](https://github.com/stevekinney/cinder/commit/3600db878c53ae5d7048487207b08a60d5421b22) Thanks [@stevekinney](https://github.com/stevekinney)! - Publish the post-0.12 downstream fixes for Chat full-height layout metadata and dense inspector styling hooks.
8
+
3
9
  ## 0.12.0
4
10
 
5
11
  ### Minor Changes
package/components.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "manifestVersion": 1,
4
4
  "package": {
5
5
  "name": "@lostgradient/cinder",
6
- "version": "0.12.0",
6
+ "version": "0.12.1",
7
7
  "framework": "svelte",
8
8
  "frameworkVersionRange": ">=5.56.0 <6",
9
9
  "classPrefix": "cinder-",
@@ -924,7 +924,8 @@
924
924
  "tags": ["chat", "conversation", "domain-suite"],
925
925
  "useWhen": [
926
926
  "Shipping a full chat surface with composer, scroll-anchor, unread indicator, and attachments bundled as one heavyweight drop-in.",
927
- "Building an AI assistant or support thread where conversation state is modeled as a transcript of role-tagged messages."
927
+ "Building an AI assistant or support thread where conversation state is modeled as a transcript of role-tagged messages.",
928
+ "Embedding Chat in a definite-height flex or grid region where its internal transcript should own scrolling."
928
929
  ],
929
930
  "avoidWhen": [
930
931
  {
@@ -83,15 +83,16 @@ function classNames(...parts) {
83
83
  }
84
84
 
85
85
  // src/components/accordion-item/accordion-item.svelte
86
- var root = $.from_html(`<div class="cinder-accordion-item__panel"><div class="cinder-accordion-item__panel-inner"><!></div></div>`);
87
- var root_1 = $.from_html(`<div><h3 class="cinder-accordion-item__heading"><button type="button" class="cinder-accordion-item__trigger"><span class="cinder-accordion-item__title"> </span> <svg class="cinder-accordion-item__chevron" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06z" clip-rule="evenodd"></path></svg></button></h3> <!></div>`);
86
+ var root = $.from_html(`<div class="cinder-accordion-item__panel-inner"><!></div>`);
87
+ var root_1 = $.from_html(`<div><h3 class="cinder-accordion-item__heading"><button type="button" class="cinder-accordion-item__trigger"><span class="cinder-accordion-item__title"> </span> <svg class="cinder-accordion-item__chevron" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06z" clip-rule="evenodd"></path></svg></button></h3> <div class="cinder-accordion-item__panel"><!></div></div>`);
88
88
  function Accordion_item($$anchor, $$props) {
89
+ const instanceId = $.props_id();
89
90
  $.push($$props, true);
90
91
  let disabled = $.prop($$props, "disabled", 3, false);
91
92
  const context = getAccordionContext();
92
93
  const isExpanded = $.derived(() => context.expandedIds.includes($$props.id));
93
- const headerId = $.derived(() => `${$$props.id}-header`);
94
- const panelId = $.derived(() => `${$$props.id}-panel`);
94
+ const headerId = $.derived(() => `${instanceId}-header`);
95
+ const panelId = $.derived(() => `${instanceId}-panel`);
95
96
  function handleClick() {
96
97
  if (disabled())
97
98
  return;
@@ -106,26 +107,26 @@ function Accordion_item($$anchor, $$props) {
106
107
  $.next(2);
107
108
  $.reset(button);
108
109
  $.reset(h3);
109
- var node = $.sibling(h3, 2);
110
+ var div_1 = $.sibling(h3, 2);
111
+ var node = $.child(div_1);
110
112
  {
111
113
  var consequent = ($$anchor2) => {
112
- var div_1 = root();
113
- var div_2 = $.child(div_1);
114
+ var div_2 = root();
114
115
  var node_1 = $.child(div_2);
115
116
  $.snippet(node_1, () => $$props.children);
116
117
  $.reset(div_2);
117
- $.reset(div_1);
118
- $.template_effect(() => $.set_attribute(div_1, "id", $.get(panelId)));
119
- $.append($$anchor2, div_1);
118
+ $.append($$anchor2, div_2);
120
119
  };
121
120
  $.if(node, ($$render) => {
122
121
  if ($.get(isExpanded))
123
122
  $$render(consequent);
124
123
  });
125
124
  }
125
+ $.reset(div_1);
126
126
  $.reset(div);
127
127
  $.template_effect(($0) => {
128
128
  $.set_class(div, 1, $0);
129
+ $.set_style(div, $$props.style);
129
130
  $.set_attribute(div, "data-cinder-expanded", $.get(isExpanded) ? "" : undefined);
130
131
  $.set_attribute(div, "data-cinder-disabled", disabled() ? "" : undefined);
131
132
  $.set_attribute(button, "id", $.get(headerId));
@@ -133,6 +134,8 @@ function Accordion_item($$anchor, $$props) {
133
134
  $.set_attribute(button, "aria-controls", $.get(panelId));
134
135
  button.disabled = disabled();
135
136
  $.set_text(text, $$props.title);
137
+ $.set_attribute(div_1, "id", $.get(panelId));
138
+ $.set_attribute(div_1, "hidden", !$.get(isExpanded));
136
139
  }, [
137
140
  () => $.clsx(classNames("cinder-accordion-item", $$props.class))
138
141
  ]);
@@ -223,4 +226,4 @@ export {
223
226
  Accordion2 as Accordion
224
227
  };
225
228
 
226
- //# debugId=1DCB10602C8FB38664756E2164756E21
229
+ //# debugId=86A20AE2C42C2B0D64756E2164756E21
@@ -5,6 +5,16 @@
5
5
  * ======================================== */
6
6
 
7
7
  .cinder-accordion-item {
8
+ --cinder-accordion-item-trigger-gap: var(--cinder-space-4);
9
+ --cinder-accordion-item-trigger-padding-block: var(--cinder-space-4);
10
+ --cinder-accordion-item-trigger-padding-inline: var(--cinder-space-5);
11
+ --cinder-accordion-item-trigger-font-size: var(--cinder-text-base);
12
+ --cinder-accordion-item-trigger-font-weight: var(--cinder-font-medium);
13
+ --cinder-accordion-item-panel-inner-padding-block-start: var(--cinder-space-4);
14
+ --cinder-accordion-item-panel-inner-padding-block-end: var(--cinder-space-5);
15
+ --cinder-accordion-item-panel-inner-padding-inline: var(--cinder-space-5);
16
+ --cinder-accordion-item-panel-font-size: var(--cinder-text-base);
17
+ --cinder-accordion-item-panel-line-height: var(--cinder-leading-normal);
8
18
  border-block-end: 1px solid var(--cinder-border);
9
19
  }
10
20
 
@@ -31,12 +41,13 @@
31
41
  display: flex;
32
42
  align-items: center;
33
43
  justify-content: space-between;
34
- gap: var(--cinder-space-4);
44
+ gap: var(--cinder-accordion-item-trigger-gap, var(--cinder-space-4));
35
45
  width: 100%;
36
- padding: var(--cinder-space-4) var(--cinder-space-5);
46
+ padding: var(--cinder-accordion-item-trigger-padding-block, var(--cinder-space-4))
47
+ var(--cinder-accordion-item-trigger-padding-inline, var(--cinder-space-5));
37
48
 
38
- font-size: var(--cinder-text-base);
39
- font-weight: var(--cinder-font-medium);
49
+ font-size: var(--cinder-accordion-item-trigger-font-size, var(--cinder-text-base));
50
+ font-weight: var(--cinder-accordion-item-trigger-font-weight, var(--cinder-font-medium));
40
51
  line-height: var(--cinder-leading-snug);
41
52
  color: var(--cinder-text);
42
53
  text-align: start;
@@ -146,9 +157,11 @@
146
157
  }
147
158
 
148
159
  .cinder-accordion-item__panel-inner {
149
- padding: var(--cinder-space-4) var(--cinder-space-5) var(--cinder-space-5);
150
- font-size: var(--cinder-text-base);
151
- line-height: var(--cinder-leading-normal);
160
+ padding: var(--cinder-accordion-item-panel-inner-padding-block-start, var(--cinder-space-4))
161
+ var(--cinder-accordion-item-panel-inner-padding-inline, var(--cinder-space-5))
162
+ var(--cinder-accordion-item-panel-inner-padding-block-end, var(--cinder-space-5));
163
+ font-size: var(--cinder-accordion-item-panel-font-size, var(--cinder-text-base));
164
+ line-height: var(--cinder-accordion-item-panel-line-height, var(--cinder-leading-normal));
152
165
  color: var(--cinder-text-muted);
153
166
  }
154
167
 
@@ -72,6 +72,10 @@ var schema = {
72
72
  class: {
73
73
  type: "string",
74
74
  description: "Additional CSS class merged with `.cinder-accordion-item`."
75
+ },
76
+ style: {
77
+ type: "string",
78
+ description: "Inline style string applied to the `.cinder-accordion-item` root."
75
79
  }
76
80
  },
77
81
  additionalProperties: false,
@@ -92,4 +96,4 @@ export {
92
96
  accordion_item_schema_default as default
93
97
  };
94
98
 
95
- //# debugId=CED71061F07864C964756E2164756E21
99
+ //# debugId=D45061C2BEE6BE8464756E2164756E21
@@ -12,6 +12,8 @@ export type AccordionItemProps = {
12
12
  disabled?: boolean;
13
13
  /** Additional CSS class merged with `.cinder-accordion-item`. */
14
14
  class?: string;
15
+ /** Inline style string applied to the `.cinder-accordion-item` root. */
16
+ style?: string;
15
17
  /** Panel content rendered when the item is expanded. */
16
18
  children: Snippet;
17
19
  };
@@ -28,4 +30,6 @@ export interface AccordionItemSchemaProps {
28
30
  disabled?: boolean;
29
31
  /** Additional CSS class merged with `.cinder-accordion-item`. */
30
32
  class?: string;
33
+ /** Inline style string applied to the `.cinder-accordion-item` root. */
34
+ style?: string;
31
35
  }
@@ -52,10 +52,21 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
52
52
  });
53
53
 
54
54
  // src/components/accordion-item/accordion-item.variables.ts
55
- var variables = [];
55
+ var variables = [
56
+ "--cinder-accordion-item-panel-font-size",
57
+ "--cinder-accordion-item-panel-inner-padding-block-end",
58
+ "--cinder-accordion-item-panel-inner-padding-block-start",
59
+ "--cinder-accordion-item-panel-inner-padding-inline",
60
+ "--cinder-accordion-item-panel-line-height",
61
+ "--cinder-accordion-item-trigger-font-size",
62
+ "--cinder-accordion-item-trigger-font-weight",
63
+ "--cinder-accordion-item-trigger-gap",
64
+ "--cinder-accordion-item-trigger-padding-block",
65
+ "--cinder-accordion-item-trigger-padding-inline"
66
+ ];
56
67
  var accordion_item_variables_default = variables;
57
68
  export {
58
69
  accordion_item_variables_default as default
59
70
  };
60
71
 
61
- //# debugId=24BF9D6EF0FBB68164756E2164756E21
72
+ //# debugId=FE56BCDDC2ED5DB364756E2164756E21
@@ -83,15 +83,16 @@ function classNames(...parts) {
83
83
  }
84
84
 
85
85
  // src/components/accordion-item/accordion-item.svelte
86
- var root = $.from_html(`<div class="cinder-accordion-item__panel"><div class="cinder-accordion-item__panel-inner"><!></div></div>`);
87
- var root_1 = $.from_html(`<div><h3 class="cinder-accordion-item__heading"><button type="button" class="cinder-accordion-item__trigger"><span class="cinder-accordion-item__title"> </span> <svg class="cinder-accordion-item__chevron" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06z" clip-rule="evenodd"></path></svg></button></h3> <!></div>`);
86
+ var root = $.from_html(`<div class="cinder-accordion-item__panel-inner"><!></div>`);
87
+ var root_1 = $.from_html(`<div><h3 class="cinder-accordion-item__heading"><button type="button" class="cinder-accordion-item__trigger"><span class="cinder-accordion-item__title"> </span> <svg class="cinder-accordion-item__chevron" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06z" clip-rule="evenodd"></path></svg></button></h3> <div class="cinder-accordion-item__panel"><!></div></div>`);
88
88
  function Accordion_item($$anchor, $$props) {
89
+ const instanceId = $.props_id();
89
90
  $.push($$props, true);
90
91
  let disabled = $.prop($$props, "disabled", 3, false);
91
92
  const context = getAccordionContext();
92
93
  const isExpanded = $.derived(() => context.expandedIds.includes($$props.id));
93
- const headerId = $.derived(() => `${$$props.id}-header`);
94
- const panelId = $.derived(() => `${$$props.id}-panel`);
94
+ const headerId = $.derived(() => `${instanceId}-header`);
95
+ const panelId = $.derived(() => `${instanceId}-panel`);
95
96
  function handleClick() {
96
97
  if (disabled())
97
98
  return;
@@ -106,26 +107,26 @@ function Accordion_item($$anchor, $$props) {
106
107
  $.next(2);
107
108
  $.reset(button);
108
109
  $.reset(h3);
109
- var node = $.sibling(h3, 2);
110
+ var div_1 = $.sibling(h3, 2);
111
+ var node = $.child(div_1);
110
112
  {
111
113
  var consequent = ($$anchor2) => {
112
- var div_1 = root();
113
- var div_2 = $.child(div_1);
114
+ var div_2 = root();
114
115
  var node_1 = $.child(div_2);
115
116
  $.snippet(node_1, () => $$props.children);
116
117
  $.reset(div_2);
117
- $.reset(div_1);
118
- $.template_effect(() => $.set_attribute(div_1, "id", $.get(panelId)));
119
- $.append($$anchor2, div_1);
118
+ $.append($$anchor2, div_2);
120
119
  };
121
120
  $.if(node, ($$render) => {
122
121
  if ($.get(isExpanded))
123
122
  $$render(consequent);
124
123
  });
125
124
  }
125
+ $.reset(div_1);
126
126
  $.reset(div);
127
127
  $.template_effect(($0) => {
128
128
  $.set_class(div, 1, $0);
129
+ $.set_style(div, $$props.style);
129
130
  $.set_attribute(div, "data-cinder-expanded", $.get(isExpanded) ? "" : undefined);
130
131
  $.set_attribute(div, "data-cinder-disabled", disabled() ? "" : undefined);
131
132
  $.set_attribute(button, "id", $.get(headerId));
@@ -133,6 +134,8 @@ function Accordion_item($$anchor, $$props) {
133
134
  $.set_attribute(button, "aria-controls", $.get(panelId));
134
135
  button.disabled = disabled();
135
136
  $.set_text(text, $$props.title);
137
+ $.set_attribute(div_1, "id", $.get(panelId));
138
+ $.set_attribute(div_1, "hidden", !$.get(isExpanded));
136
139
  }, [
137
140
  () => $.clsx(classNames("cinder-accordion-item", $$props.class))
138
141
  ]);
@@ -149,4 +152,4 @@ export {
149
152
  Accordion_item as AccordionItem
150
153
  };
151
154
 
152
- //# debugId=327E97542BFF12B664756E2164756E21
155
+ //# debugId=7FB287FC6F3C44AF64756E2164756E21
@@ -1,9 +1,19 @@
1
1
  @layer cinder.tokens, cinder.foundation, cinder.components, cinder.utilities;
2
2
  @layer cinder.components {
3
3
  .cinder-action-row {
4
+ --cinder-action-row-padding-block: var(--cinder-space-3);
5
+ --cinder-action-row-padding-inline: var(--cinder-space-4);
6
+ --cinder-action-row-layout-column-gap: var(--cinder-space-3);
7
+ --cinder-action-row-layout-row-gap: var(--cinder-space-2);
8
+ --cinder-action-row-body-gap: var(--cinder-space-1);
9
+ --cinder-action-row-title-font-size: var(--cinder-text-sm);
10
+ --cinder-action-row-description-font-size: var(--cinder-text-sm);
11
+ --cinder-action-row-meta-font-size: var(--cinder-text-xs);
12
+ --cinder-action-row-trailing-gap: var(--cinder-space-2);
4
13
  display: block;
5
14
  inline-size: 100%;
6
- padding: var(--cinder-space-3) var(--cinder-space-4);
15
+ padding: var(--cinder-action-row-padding-block, var(--cinder-space-3))
16
+ var(--cinder-action-row-padding-inline, var(--cinder-space-4));
7
17
  border: 0;
8
18
  border-radius: var(--cinder-radius-md);
9
19
  background: transparent;
@@ -14,7 +24,8 @@
14
24
  }
15
25
 
16
26
  .cinder-action-row[data-cinder-density='condensed'] {
17
- padding: var(--cinder-space-2) var(--cinder-space-3);
27
+ --cinder-action-row-padding-block: var(--cinder-space-2);
28
+ --cinder-action-row-padding-inline: var(--cinder-space-3);
18
29
  }
19
30
 
20
31
  @media (hover: hover) {
@@ -67,8 +78,8 @@
67
78
  .cinder-action-row__layout {
68
79
  display: grid;
69
80
  align-items: center;
70
- column-gap: var(--cinder-space-3);
71
- row-gap: var(--cinder-space-2);
81
+ column-gap: var(--cinder-action-row-layout-column-gap, var(--cinder-space-3));
82
+ row-gap: var(--cinder-action-row-layout-row-gap, var(--cinder-space-2));
72
83
  grid-template-columns: 1fr;
73
84
  grid-template-areas: 'body';
74
85
  }
@@ -99,34 +110,34 @@
99
110
  display: flex;
100
111
  min-inline-size: 0;
101
112
  flex-direction: column;
102
- gap: var(--cinder-space-1);
113
+ gap: var(--cinder-action-row-body-gap, var(--cinder-space-1));
103
114
  }
104
115
 
105
116
  .cinder-action-row__trailing {
106
117
  grid-area: trailing;
107
118
  display: inline-flex;
108
119
  align-items: center;
109
- gap: var(--cinder-space-2);
120
+ gap: var(--cinder-action-row-trailing-gap, var(--cinder-space-2));
110
121
  color: var(--cinder-text-muted);
111
122
  }
112
123
 
113
124
  .cinder-action-row__title {
114
125
  color: inherit;
115
- font-size: var(--cinder-text-sm);
126
+ font-size: var(--cinder-action-row-title-font-size, var(--cinder-text-sm));
116
127
  line-height: var(--cinder-leading-snug);
117
128
  overflow-wrap: anywhere;
118
129
  }
119
130
 
120
131
  .cinder-action-row__description {
121
132
  color: var(--cinder-text-muted);
122
- font-size: var(--cinder-text-sm);
133
+ font-size: var(--cinder-action-row-description-font-size, var(--cinder-text-sm));
123
134
  line-height: var(--cinder-leading-snug);
124
135
  overflow-wrap: anywhere;
125
136
  }
126
137
 
127
138
  .cinder-action-row__meta {
128
139
  color: var(--cinder-text-muted);
129
- font-size: var(--cinder-text-xs);
140
+ font-size: var(--cinder-action-row-meta-font-size, var(--cinder-text-xs));
130
141
  line-height: var(--cinder-leading-snug);
131
142
  overflow-wrap: anywhere;
132
143
  }
@@ -84,6 +84,10 @@ var schema = {
84
84
  class: {
85
85
  type: "string",
86
86
  description: "Additional classes merged with `.cinder-action-row`."
87
+ },
88
+ style: {
89
+ type: "string",
90
+ description: "Inline style string applied to the `.cinder-action-row` root."
87
91
  }
88
92
  },
89
93
  additionalProperties: false,
@@ -123,4 +127,4 @@ export {
123
127
  action_row_schema_default as default
124
128
  };
125
129
 
126
- //# debugId=CAD2E7A8D028F6E564756E2164756E21
130
+ //# debugId=FB7AA1AE4716503064756E2164756E21
@@ -43,3 +43,46 @@ export type ActionRowProps = Omit<HTMLButtonAttributes, 'aria-current' | 'aria-p
43
43
  /** Additional classes merged with `.cinder-action-row`. */
44
44
  class?: string;
45
45
  };
46
+ /** Schema generator surface for ActionRow — excludes native button attributes except supported styling hooks. */
47
+ export interface ActionRowSchemaProps {
48
+ /**
49
+ * Density token surfaced as `data-cinder-density`.
50
+ * @default "comfortable"
51
+ */
52
+ density?: ActionRowDensity;
53
+ /**
54
+ * Whether the row is currently selected.
55
+ * @default false
56
+ */
57
+ selected?: boolean;
58
+ /**
59
+ * Accessible state mapping for selected rows.
60
+ * Use `pressed` for in-page selectable rows and `current` for navigation/current-item rows.
61
+ * @default "pressed"
62
+ */
63
+ selectedState?: ActionRowSelectedState;
64
+ /**
65
+ * `aria-current` value used when `selectedState="current"` and `selected` is true.
66
+ * @default "true"
67
+ */
68
+ currentValue?: ActionRowCurrentValue;
69
+ /**
70
+ * Native button type.
71
+ * @default "button"
72
+ */
73
+ type?: 'button' | 'submit' | 'reset';
74
+ /** Leading visual such as an icon, avatar, marker, or status dot. */
75
+ leading?: Snippet;
76
+ /** Primary row label. Required so the row has visible text and an accessible name. */
77
+ title: Snippet;
78
+ /** Secondary description below the title. */
79
+ description?: Snippet;
80
+ /** Tertiary metadata such as timestamp, status text, or a compact badge. */
81
+ meta?: Snippet;
82
+ /** Trailing region such as a timestamp, count, badge, chevron, or shortcut hint. */
83
+ trailing?: Snippet;
84
+ /** Additional classes merged with `.cinder-action-row`. */
85
+ class?: string;
86
+ /** Inline style string applied to the `.cinder-action-row` root. */
87
+ style?: string;
88
+ }
@@ -52,10 +52,20 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
52
52
  });
53
53
 
54
54
  // src/components/action-row/action-row.variables.ts
55
- var variables = [];
55
+ var variables = [
56
+ "--cinder-action-row-body-gap",
57
+ "--cinder-action-row-description-font-size",
58
+ "--cinder-action-row-layout-column-gap",
59
+ "--cinder-action-row-layout-row-gap",
60
+ "--cinder-action-row-meta-font-size",
61
+ "--cinder-action-row-padding-block",
62
+ "--cinder-action-row-padding-inline",
63
+ "--cinder-action-row-title-font-size",
64
+ "--cinder-action-row-trailing-gap"
65
+ ];
56
66
  var action_row_variables_default = variables;
57
67
  export {
58
68
  action_row_variables_default as default
59
69
  };
60
70
 
61
- //# debugId=760088280D320BC064756E2164756E21
71
+ //# debugId=4A0646B62FFB1E4364756E2164756E21
@@ -8,6 +8,7 @@
8
8
  * @tag domain-suite
9
9
  * @useWhen Shipping a full chat surface with composer, scroll-anchor, unread indicator, and attachments bundled as one heavyweight drop-in.
10
10
  * @useWhen Building an AI assistant or support thread where conversation state is modeled as a transcript of role-tagged messages.
11
+ * @useWhen Embedding Chat in a definite-height flex or grid region where its internal transcript should own scrolling.
11
12
  * @avoidWhen Rendering a one-off message list — compose lighter primitives directly instead of pulling the full suite.
12
13
  * @avoidWhen The transcript is read-only and needs no composer — a simple list of message bubbles is a better fit.
13
14
  * @related markdown-editor
@@ -13,6 +13,7 @@
13
13
  * ======================================== */
14
14
 
15
15
  .cinder-side-navigation {
16
+ --cinder-side-navigation-list-gap: var(--cinder-space-1);
16
17
  display: block;
17
18
  }
18
19
 
@@ -22,7 +23,7 @@
22
23
  padding: 0;
23
24
  display: flex;
24
25
  flex-direction: column;
25
- gap: var(--cinder-space-1);
26
+ gap: var(--cinder-side-navigation-list-gap, var(--cinder-space-1));
26
27
  }
27
28
 
28
29
  /* ----------------------------------------
@@ -59,6 +59,14 @@ var schema = {
59
59
  ariaLabel: {
60
60
  type: "string",
61
61
  description: "Accessible name for the <nav> landmark. Required, non-empty, distinct from other navs on the page."
62
+ },
63
+ class: {
64
+ type: "string",
65
+ description: "Additional CSS class merged with `.cinder-side-navigation`."
66
+ },
67
+ style: {
68
+ type: "string",
69
+ description: "Inline style string applied to the `.cinder-side-navigation` root."
62
70
  }
63
71
  },
64
72
  additionalProperties: false,
@@ -70,11 +78,6 @@ var schema = {
70
78
  reason: "function-or-snippet",
71
79
  required: true,
72
80
  description: "Must be <li> elements containing NavigationItem and/or SideNavigationGroup."
73
- },
74
- {
75
- name: "class",
76
- reason: "unknown-shape",
77
- description: "Additional CSS class merged with `.cinder-side-navigation`."
78
81
  }
79
82
  ]
80
83
  }
@@ -84,4 +87,4 @@ export {
84
87
  side_navigation_schema_default as default
85
88
  };
86
89
 
87
- //# debugId=F505A75B9F06310E64756E2164756E21
90
+ //# debugId=8436A7F5FC75585064756E2164756E21
@@ -9,3 +9,14 @@ export type SideNavigationProps = Omit<HTMLAttributes<HTMLElement>, 'aria-label'
9
9
  /** Must be <li> elements containing NavigationItem and/or SideNavigationGroup. */
10
10
  children: Snippet;
11
11
  };
12
+ /** Schema generator surface for SideNavigation — excludes native attributes except supported styling hooks. */
13
+ export interface SideNavigationSchemaProps {
14
+ /** Accessible name for the <nav> landmark. Required, non-empty, distinct from other navs on the page. */
15
+ ariaLabel: string;
16
+ /** Additional CSS class merged with `.cinder-side-navigation`. */
17
+ class?: string;
18
+ /** Inline style string applied to the `.cinder-side-navigation` root. */
19
+ style?: string;
20
+ /** Must be <li> elements containing NavigationItem and/or SideNavigationGroup. */
21
+ children: Snippet;
22
+ }
@@ -52,10 +52,10 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
52
52
  });
53
53
 
54
54
  // src/components/side-navigation/side-navigation.variables.ts
55
- var variables = [];
55
+ var variables = ["--cinder-side-navigation-list-gap"];
56
56
  var side_navigation_variables_default = variables;
57
57
  export {
58
58
  side_navigation_variables_default as default
59
59
  };
60
60
 
61
- //# debugId=641D501BF9DA807764756E2164756E21
61
+ //# debugId=E3DF58EF8E02E02F64756E2164756E21
@@ -1,17 +1,25 @@
1
1
  @layer cinder.tokens, cinder.foundation, cinder.components, cinder.utilities;
2
2
  @layer cinder.components {
3
3
  .cinder-stat {
4
+ --cinder-stat-row-gap: var(--cinder-space-1, 0.25rem);
5
+ --cinder-stat-column-gap: var(--cinder-space-3, 0.75rem);
6
+ --cinder-stat-label-font-size: var(--cinder-text-sm);
7
+ --cinder-stat-value-font-size: var(--cinder-text-4xl);
8
+ --cinder-stat-value-font-weight: var(--cinder-font-semibold);
9
+ --cinder-stat-value-line-height: 1.1;
10
+ --cinder-stat-change-gap: var(--cinder-space-1, 0.25rem);
11
+ --cinder-stat-change-font-size: var(--cinder-text-sm);
4
12
  display: grid;
5
13
  grid-template-columns: 1fr;
6
14
  grid-template-rows: auto auto auto;
7
- row-gap: var(--cinder-space-1, 0.25rem);
15
+ row-gap: var(--cinder-stat-row-gap, var(--cinder-space-1, 0.25rem));
8
16
  align-items: start;
9
17
  color: var(--cinder-text);
10
18
  }
11
19
 
12
20
  .cinder-stat[data-cinder-has-icon] {
13
21
  grid-template-columns: auto 1fr;
14
- column-gap: var(--cinder-space-3, 0.75rem);
22
+ column-gap: var(--cinder-stat-column-gap, var(--cinder-space-3, 0.75rem));
15
23
  }
16
24
 
17
25
  .cinder-stat__icon {
@@ -25,7 +33,7 @@
25
33
  }
26
34
 
27
35
  .cinder-stat__label {
28
- font-size: var(--cinder-text-sm);
36
+ font-size: var(--cinder-stat-label-font-size, var(--cinder-text-sm));
29
37
  color: var(--cinder-text-muted);
30
38
  }
31
39
 
@@ -34,10 +42,10 @@
34
42
  }
35
43
 
36
44
  .cinder-stat__value {
37
- font-size: var(--cinder-text-4xl);
38
- font-weight: var(--cinder-font-semibold);
45
+ font-size: var(--cinder-stat-value-font-size, var(--cinder-text-4xl));
46
+ font-weight: var(--cinder-stat-value-font-weight, var(--cinder-font-semibold));
39
47
  font-variant-numeric: tabular-nums;
40
- line-height: 1.1;
48
+ line-height: var(--cinder-stat-value-line-height, 1.1);
41
49
  }
42
50
 
43
51
  .cinder-stat[data-cinder-has-icon] .cinder-stat__value {
@@ -47,8 +55,8 @@
47
55
  .cinder-stat__change {
48
56
  display: inline-flex;
49
57
  align-items: center;
50
- gap: var(--cinder-space-1, 0.25rem);
51
- font-size: var(--cinder-text-sm);
58
+ gap: var(--cinder-stat-change-gap, var(--cinder-space-1, 0.25rem));
59
+ font-size: var(--cinder-stat-change-font-size, var(--cinder-text-sm));
52
60
  }
53
61
 
54
62
  .cinder-stat[data-cinder-has-icon] .cinder-stat__change {
@@ -78,6 +78,10 @@ var schema = {
78
78
  class: {
79
79
  type: "string",
80
80
  description: "Additional class names merged with `.cinder-stat`."
81
+ },
82
+ style: {
83
+ type: "string",
84
+ description: "Inline style string applied to the `.cinder-stat` root."
81
85
  }
82
86
  },
83
87
  additionalProperties: false,
@@ -107,4 +111,4 @@ export {
107
111
  stat_schema_default as default
108
112
  };
109
113
 
110
- //# debugId=C0F5E1E3C641FA3864756E2164756E21
114
+ //# debugId=429D4BA8E0F6656864756E2164756E21
@@ -33,3 +33,22 @@ export type StatProps = Omit<HTMLAttributes<HTMLDivElement>, 'class'> & {
33
33
  /** Additional class names merged with `.cinder-stat`. */
34
34
  class?: string;
35
35
  };
36
+ /** Schema generator surface for Stat — excludes native attributes except supported styling hooks. */
37
+ export interface StatSchemaProps {
38
+ /** Short label describing the metric, e.g. "Monthly Revenue". */
39
+ label: string;
40
+ /** The statistic. Strings rendered verbatim; numbers formatted via formatNumber. */
41
+ value: string | number;
42
+ /** Optional change indicator with direction and accessible wording. */
43
+ change?: StatChange;
44
+ /** Optional leading icon snippet (decorative — wrapper is aria-hidden). */
45
+ icon?: Snippet;
46
+ /** Intl.NumberFormat options applied only when `value` is a number. */
47
+ valueFormatOptions?: Intl.NumberFormatOptions;
48
+ /** Locale forwarded to formatNumber. Defaults to the nearest LocaleProvider locale, then en-US. */
49
+ valueLocale?: string;
50
+ /** Additional class names merged with `.cinder-stat`. */
51
+ class?: string;
52
+ /** Inline style string applied to the `.cinder-stat` root. */
53
+ style?: string;
54
+ }