@ctrl-ui/react 0.8.4 → 0.8.6
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.
- package/dist/audio-visualizer.js +1 -1
- package/dist/chat-composer-editor/extensions/mention.js +4 -0
- package/dist/chat-layout.d.ts +5 -0
- package/dist/chat-layout.js +61 -20
- package/dist/chat-message.d.ts +5 -0
- package/dist/chat-message.js +19 -2
- package/dist/context.js +0 -2
- package/dist/email/email-brand.d.ts +60 -0
- package/dist/email/email-brand.js +101 -0
- package/dist/email/email-code.d.ts +18 -0
- package/dist/email/email-code.js +172 -0
- package/dist/email/email-footer.d.ts +63 -0
- package/dist/email/email-footer.js +98 -0
- package/dist/email/email.d.ts +60 -11
- package/dist/email/email.js +155 -24
- package/dist/email/templates.d.ts +54 -9
- package/dist/email/templates.js +314 -116
- package/dist/email/theme.d.ts +13 -5
- package/dist/email/theme.js +30 -8
- package/dist/hooks/use-chat-message.d.ts +1 -0
- package/dist/hooks/use-chat-message.js +1 -0
- package/dist/hooks/use-chat-thread-scroll.d.ts +8 -0
- package/dist/hooks/use-chat-thread-scroll.js +66 -0
- package/dist/hooks/use-user-ask.d.ts +6 -4
- package/dist/hooks/use-user-ask.js +56 -17
- package/dist/inline-attachment.js +1 -1
- package/dist/knob-contracts/action-bar-knobs.d.ts +1 -1
- package/dist/knob-contracts/action-bar-knobs.js +1 -1
- package/dist/knob-contracts/activity-knobs.d.ts +1 -1
- package/dist/knob-contracts/activity-knobs.js +2 -1
- package/dist/knob-contracts/audio-visualizer-knobs.d.ts +1 -1
- package/dist/knob-contracts/audio-visualizer-knobs.js +1 -0
- package/dist/knob-contracts/chat-composer-attachment-knobs.d.ts +1 -1
- package/dist/knob-contracts/chat-composer-attachment-knobs.js +2 -0
- package/dist/knob-contracts/chat-composer-knobs.d.ts +1 -1
- package/dist/knob-contracts/chat-composer-knobs.js +1 -0
- package/dist/knob-contracts/chat-layout-knobs.d.ts +1 -1
- package/dist/knob-contracts/chat-layout-knobs.js +2 -1
- package/dist/knob-contracts/chat-message-knobs.d.ts +1 -1
- package/dist/knob-contracts/chat-message-knobs.js +3 -1
- package/dist/knob-contracts/context-knobs.d.ts +1 -1
- package/dist/knob-contracts/context-knobs.js +3 -0
- package/dist/knob-contracts/inline-attachment-knobs.d.ts +1 -1
- package/dist/knob-contracts/inline-attachment-knobs.js +4 -0
- package/dist/knob-contracts/inline-citation-knobs.d.ts +1 -1
- package/dist/knob-contracts/inline-citation-knobs.js +3 -1
- package/dist/knob-contracts/page-layout-knobs.d.ts +4 -0
- package/dist/knob-contracts/page-layout-knobs.js +16 -0
- package/dist/knob-contracts/table-of-contents-knobs.d.ts +1 -1
- package/dist/knob-contracts/table-of-contents-knobs.js +3 -3
- package/dist/knob-contracts/task-list-knobs.d.ts +1 -1
- package/dist/knob-contracts/task-list-knobs.js +4 -0
- package/dist/knob-contracts/user-ask-knobs.d.ts +1 -1
- package/dist/knob-contracts/user-ask-knobs.js +4 -0
- package/dist/lib/phone-input-format.js +1 -1
- package/dist/markdown-block.js +1 -1
- package/dist/styles/index.css +2 -1
- package/dist/styles/recipes/action-bar.css +37 -5
- package/dist/styles/recipes/activity.css +36 -3
- package/dist/styles/recipes/alert.css +2 -0
- package/dist/styles/recipes/audio-visualizer.css +8 -1
- package/dist/styles/recipes/button-group.css +8 -0
- package/dist/styles/recipes/button.css +15 -0
- package/dist/styles/recipes/calendar.css +21 -0
- package/dist/styles/recipes/card.css +2 -0
- package/dist/styles/recipes/chat-composer-attachment.css +33 -2
- package/dist/styles/recipes/chat-composer.css +16 -2
- package/dist/styles/recipes/chat-layout.css +25 -1
- package/dist/styles/recipes/chat-message.css +69 -2
- package/dist/styles/recipes/choice.css +12 -0
- package/dist/styles/recipes/code-diff.css +1 -0
- package/dist/styles/recipes/code.css +25 -0
- package/dist/styles/recipes/context.css +30 -18
- package/dist/styles/recipes/dynamic-notification-input.css +6 -0
- package/dist/styles/recipes/dynamic-notification.css +1 -0
- package/dist/styles/recipes/environment-variables.css +1 -0
- package/dist/styles/recipes/field-parts.css +2 -0
- package/dist/styles/recipes/field.css +6 -0
- package/dist/styles/recipes/gradient-editor.css +17 -0
- package/dist/styles/recipes/inline-attachment.css +57 -14
- package/dist/styles/recipes/inline-citation.css +44 -6
- package/dist/styles/recipes/item.css +3 -1
- package/dist/styles/recipes/markdown-block.css +1 -0
- package/dist/styles/recipes/markdown.css +7 -0
- package/dist/styles/recipes/page-layout.css +219 -0
- package/dist/styles/recipes/pagination.css +16 -0
- package/dist/styles/recipes/popup-drawer.css +3 -1
- package/dist/styles/recipes/popup-toast.css +2 -0
- package/dist/styles/recipes/popup.css +8 -12
- package/dist/styles/recipes/range.css +24 -2
- package/dist/styles/recipes/rich-tooltip.css +1 -0
- package/dist/styles/recipes/source-badge.css +20 -0
- package/dist/styles/recipes/table-of-contents.css +10 -10
- package/dist/styles/recipes/tabs.css +16 -0
- package/dist/styles/recipes/task-list.css +61 -8
- package/dist/styles/recipes/thread-rail.css +19 -13
- package/dist/styles/recipes/toolbar.css +21 -0
- package/dist/styles/recipes/transcript-divider.css +1 -0
- package/dist/styles/recipes/user-ask.css +59 -16
- package/dist/styles/theme.css +34 -0
- package/dist/thread-rail.js +1 -1
- package/dist/ui/alert-dialog.js +2 -2
- package/dist/ui/autocomplete.js +1 -1
- package/dist/ui/color-picker.js +3 -3
- package/dist/ui/combobox.js +1 -1
- package/dist/ui/command.d.ts +5 -3
- package/dist/ui/command.js +27 -3
- package/dist/ui/context-menu.js +2 -2
- package/dist/ui/dialog.js +2 -2
- package/dist/ui/drawer.js +2 -2
- package/dist/ui/dropdown-menu.js +1 -1
- package/dist/ui/dropzone.js +4 -1
- package/dist/ui/gradient-editor.js +2 -2
- package/dist/ui/hover-card.js +1 -1
- package/dist/ui/infinite-canvas.js +1 -0
- package/dist/ui/menubar.js +2 -2
- package/dist/ui/navigation-menu.js +1 -1
- package/dist/ui/number-field.js +1 -1
- package/dist/ui/page-layout.d.ts +44 -0
- package/dist/ui/page-layout.js +108 -0
- package/dist/ui/phone-input.js +4 -4
- package/dist/ui/popover.js +1 -1
- package/dist/ui/resizable.js +1 -1
- package/dist/ui/rich-tooltip.js +1 -1
- package/dist/ui/select.js +1 -1
- package/dist/ui/sheet.js +2 -2
- package/dist/ui/sidebar-resize-rail.js +1 -1
- package/dist/ui/slider.js +1 -1
- package/dist/ui/toast.js +2 -2
- package/dist/ui/tooltip.js +1 -1
- package/dist/ui/trigger-menu.js +1 -1
- package/dist/user-ask.d.ts +5 -3
- package/dist/user-ask.js +38 -13
- package/package.json +3 -2
package/dist/user-ask.js
CHANGED
|
@@ -126,30 +126,37 @@ function UserAskPagination({ className, ...props }) {
|
|
|
126
126
|
]
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
|
-
function UserAskQuestion({ id, title, defaultValue, className, children, ...props }) {
|
|
129
|
+
function UserAskQuestion({ id, title, multiple = false, defaultValue, className, children, ...props }) {
|
|
130
130
|
const ask = useUserAskContext();
|
|
131
131
|
const key = useId();
|
|
132
132
|
const active = ask.activeQuestion?.key === key;
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
133
|
+
const defaultKey = Array.isArray(defaultValue) ? defaultValue.join("\0") : defaultValue;
|
|
134
|
+
useEffect(() => {
|
|
135
|
+
const defaultValues = defaultKey === void 0 ? void 0 : defaultKey.split("\0");
|
|
136
|
+
return ask.registerQuestion({
|
|
137
|
+
key,
|
|
138
|
+
id,
|
|
139
|
+
title,
|
|
140
|
+
multiple,
|
|
141
|
+
defaultValues
|
|
142
|
+
});
|
|
143
|
+
}, [
|
|
139
144
|
ask.registerQuestion,
|
|
140
145
|
key,
|
|
141
146
|
id,
|
|
142
147
|
title,
|
|
143
|
-
|
|
148
|
+
multiple,
|
|
149
|
+
defaultKey
|
|
144
150
|
]);
|
|
145
151
|
useEffect(() => () => ask.unregisterQuestion(key), [ask.unregisterQuestion, key]);
|
|
146
152
|
return /* @__PURE__ */ jsx(UserAskQuestionContext.Provider, {
|
|
147
153
|
value: {
|
|
148
154
|
id,
|
|
149
|
-
active
|
|
155
|
+
active,
|
|
156
|
+
multiple
|
|
150
157
|
},
|
|
151
158
|
children: /* @__PURE__ */ jsx("div", {
|
|
152
|
-
role: "radiogroup",
|
|
159
|
+
role: multiple ? "group" : "radiogroup",
|
|
153
160
|
"aria-labelledby": active ? ask.titleId : void 0,
|
|
154
161
|
hidden: !active,
|
|
155
162
|
"data-control-ui": "user-ask",
|
|
@@ -202,12 +209,13 @@ function UserAskOption({ value, recommended = false, disabled = false, className
|
|
|
202
209
|
},
|
|
203
210
|
children: /* @__PURE__ */ jsxs("button", {
|
|
204
211
|
type: "button",
|
|
205
|
-
role: "radio",
|
|
212
|
+
role: question.multiple ? "checkbox" : "radio",
|
|
206
213
|
"aria-checked": selected,
|
|
207
214
|
disabled,
|
|
208
215
|
"data-control-ui": "user-ask",
|
|
209
216
|
"data-control-family": "user-ask",
|
|
210
217
|
"data-slot": "option",
|
|
218
|
+
"data-multiple": question.multiple ? "" : void 0,
|
|
211
219
|
"data-selected": selected ? "" : void 0,
|
|
212
220
|
"data-recommended": recommended ? "" : void 0,
|
|
213
221
|
onClick: handleClick,
|
|
@@ -218,6 +226,7 @@ function UserAskOption({ value, recommended = false, disabled = false, className
|
|
|
218
226
|
"data-control-ui": "user-ask",
|
|
219
227
|
"data-control-family": "user-ask",
|
|
220
228
|
"data-slot": "option-indicator",
|
|
229
|
+
"data-multiple": question.multiple ? "" : void 0,
|
|
221
230
|
"data-selected": selected ? "" : void 0,
|
|
222
231
|
className: "inline-flex shrink-0 items-center justify-center",
|
|
223
232
|
children: selected ? /* @__PURE__ */ jsx(Check, { className: "size-3" }) : index + 1
|
|
@@ -285,12 +294,13 @@ function UserAskOptionInput({ label = "Other", placeholder = "Type your own answ
|
|
|
285
294
|
}
|
|
286
295
|
if (!selected) return /* @__PURE__ */ jsxs("button", {
|
|
287
296
|
type: "button",
|
|
288
|
-
role: "radio",
|
|
297
|
+
role: question.multiple ? "checkbox" : "radio",
|
|
289
298
|
"aria-checked": false,
|
|
290
299
|
disabled,
|
|
291
300
|
"data-control-ui": "user-ask",
|
|
292
301
|
"data-control-family": "user-ask",
|
|
293
302
|
"data-slot": "option",
|
|
303
|
+
"data-multiple": question.multiple ? "" : void 0,
|
|
294
304
|
"data-freeform": "",
|
|
295
305
|
onClick: () => ask.select(question.id, key),
|
|
296
306
|
className: cn(optionRowClasses, "disabled:cursor-not-allowed", className),
|
|
@@ -300,6 +310,7 @@ function UserAskOptionInput({ label = "Other", placeholder = "Type your own answ
|
|
|
300
310
|
"data-control-ui": "user-ask",
|
|
301
311
|
"data-control-family": "user-ask",
|
|
302
312
|
"data-slot": "option-indicator",
|
|
313
|
+
"data-multiple": question.multiple ? "" : void 0,
|
|
303
314
|
className: "inline-flex shrink-0 items-center justify-center",
|
|
304
315
|
children: index + 1
|
|
305
316
|
}), /* @__PURE__ */ jsx("span", {
|
|
@@ -314,11 +325,25 @@ function UserAskOptionInput({ label = "Other", placeholder = "Type your own answ
|
|
|
314
325
|
"data-control-ui": "user-ask",
|
|
315
326
|
"data-control-family": "user-ask",
|
|
316
327
|
"data-slot": "option",
|
|
328
|
+
"data-multiple": question.multiple ? "" : void 0,
|
|
317
329
|
"data-selected": "",
|
|
318
330
|
"data-freeform": "",
|
|
319
331
|
className: cn(optionRowClasses, className),
|
|
320
332
|
style,
|
|
321
|
-
children: [/* @__PURE__ */ jsx("
|
|
333
|
+
children: [question.multiple ? /* @__PURE__ */ jsx("button", {
|
|
334
|
+
type: "button",
|
|
335
|
+
role: "checkbox",
|
|
336
|
+
"aria-checked": true,
|
|
337
|
+
"aria-label": `Clear ${label}`,
|
|
338
|
+
"data-control-ui": "user-ask",
|
|
339
|
+
"data-control-family": "user-ask",
|
|
340
|
+
"data-slot": "option-indicator",
|
|
341
|
+
"data-multiple": "",
|
|
342
|
+
"data-selected": "",
|
|
343
|
+
onClick: () => ask.select(question.id, key),
|
|
344
|
+
className: "inline-flex shrink-0 items-center justify-center",
|
|
345
|
+
children: /* @__PURE__ */ jsx(Check, { className: "size-3" })
|
|
346
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
322
347
|
"aria-hidden": "true",
|
|
323
348
|
"data-control-ui": "user-ask",
|
|
324
349
|
"data-control-family": "user-ask",
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ctrl-ui/react",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"description": "Control UI components, blocks, and primitives with neutral defaults and consumer-owned themes.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/damien-schneider/control-ui.git",
|
|
8
|
+
"url": "git+https://github.com/damien-schneider/control-ui.git",
|
|
9
9
|
"directory": "packages/components"
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://control-ui.dev",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"prosemirror-view": "^1.42.3",
|
|
51
51
|
"react": "^19.2.8",
|
|
52
52
|
"react-day-picker": "^10.0.1",
|
|
53
|
+
"react-dom": "^19.2.8",
|
|
53
54
|
"react-email": "^6.9.5",
|
|
54
55
|
"react-phone-number-input": "^3.4.18",
|
|
55
56
|
"react-resizable-panels": "^4.12.4",
|