@tomny-dev/uzi 0.6.3 → 0.7.0-pr.78.214.1.87d1ede

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 (118) hide show
  1. package/dist/components/conversation/Conversation.d.ts +18 -0
  2. package/dist/components/conversation/Conversation.d.ts.map +1 -0
  3. package/dist/components/conversation/Conversation.test.d.ts +2 -0
  4. package/dist/components/conversation/Conversation.test.d.ts.map +1 -0
  5. package/dist/components/multi-select/MultiSelect.d.ts +9 -0
  6. package/dist/components/multi-select/MultiSelect.d.ts.map +1 -1
  7. package/dist/components/multi-select/MultiSelect.test.d.ts +2 -0
  8. package/dist/components/multi-select/MultiSelect.test.d.ts.map +1 -0
  9. package/dist/index.cjs +19 -11
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +13 -12
  13. package/dist/index26.js +10 -2
  14. package/dist/index26.js.map +1 -1
  15. package/dist/index27.cjs +13 -1
  16. package/dist/index27.cjs.map +1 -1
  17. package/dist/index27.js +74 -37
  18. package/dist/index27.js.map +1 -1
  19. package/dist/index28.cjs +74 -37
  20. package/dist/index28.cjs.map +1 -1
  21. package/dist/index53.js +26 -16
  22. package/dist/index53.js.map +1 -1
  23. package/dist/index54.cjs +37 -20
  24. package/dist/index54.cjs.map +1 -1
  25. package/dist/index54.js +57 -23
  26. package/dist/index54.js.map +1 -1
  27. package/dist/index55.cjs +63 -24
  28. package/dist/index55.cjs.map +1 -1
  29. package/dist/index55.js +16 -16
  30. package/dist/index55.js.map +1 -1
  31. package/dist/index56.cjs +19 -20
  32. package/dist/index56.cjs.map +1 -1
  33. package/dist/index56.js +24 -21
  34. package/dist/index56.js.map +1 -1
  35. package/dist/index57.cjs +25 -22
  36. package/dist/index57.cjs.map +1 -1
  37. package/dist/index57.js +17 -10
  38. package/dist/index57.js.map +1 -1
  39. package/dist/index58.cjs +23 -11
  40. package/dist/index58.cjs.map +1 -1
  41. package/dist/index58.js +25 -14
  42. package/dist/index58.js.map +1 -1
  43. package/dist/index59.cjs +25 -13
  44. package/dist/index59.cjs.map +1 -1
  45. package/dist/index59.js +10 -11
  46. package/dist/index59.js.map +1 -1
  47. package/dist/index60.cjs +11 -13
  48. package/dist/index60.cjs.map +1 -1
  49. package/dist/index60.js +13 -16
  50. package/dist/index60.js.map +1 -1
  51. package/dist/index61.cjs +13 -16
  52. package/dist/index61.cjs.map +1 -1
  53. package/dist/index61.js +10 -8
  54. package/dist/index61.js.map +1 -1
  55. package/dist/index62.cjs +11 -10
  56. package/dist/index62.cjs.map +1 -1
  57. package/dist/index62.js +15 -87
  58. package/dist/index62.js.map +1 -1
  59. package/dist/index63.cjs +15 -89
  60. package/dist/index63.cjs.map +1 -1
  61. package/dist/index63.js +9 -21
  62. package/dist/index63.js.map +1 -1
  63. package/dist/index64.cjs +12 -30
  64. package/dist/index64.cjs.map +1 -1
  65. package/dist/index64.js +89 -43
  66. package/dist/index64.js.map +1 -1
  67. package/dist/index65.cjs +88 -42
  68. package/dist/index65.cjs.map +1 -1
  69. package/dist/index65.js +14 -50
  70. package/dist/index65.js.map +1 -1
  71. package/dist/index66.cjs +15 -69
  72. package/dist/index66.cjs.map +1 -1
  73. package/dist/index66.js +25 -414
  74. package/dist/index66.js.map +1 -1
  75. package/dist/index67.cjs +25 -416
  76. package/dist/index67.cjs.map +1 -1
  77. package/dist/index67.js +56 -58
  78. package/dist/index67.js.map +1 -1
  79. package/dist/index68.cjs +82 -85
  80. package/dist/index68.cjs.map +1 -1
  81. package/dist/index68.js +419 -226
  82. package/dist/index68.js.map +1 -1
  83. package/dist/index69.cjs +420 -225
  84. package/dist/index69.cjs.map +1 -1
  85. package/dist/index69.js +58 -42
  86. package/dist/index69.js.map +1 -1
  87. package/dist/index70.cjs +85 -61
  88. package/dist/index70.cjs.map +1 -1
  89. package/dist/index70.js +236 -76
  90. package/dist/index70.js.map +1 -1
  91. package/dist/index71.cjs +235 -75
  92. package/dist/index71.cjs.map +1 -1
  93. package/dist/index71.js +42 -20
  94. package/dist/index71.js.map +1 -1
  95. package/dist/index72.cjs +60 -27
  96. package/dist/index72.cjs.map +1 -1
  97. package/dist/index72.js +73 -88
  98. package/dist/index72.js.map +1 -1
  99. package/dist/index73.cjs +73 -90
  100. package/dist/index73.cjs.map +1 -1
  101. package/dist/index73.js +17 -15
  102. package/dist/index73.js.map +1 -1
  103. package/dist/index74.cjs +22 -19
  104. package/dist/index74.cjs.map +1 -1
  105. package/dist/index74.js +85 -143
  106. package/dist/index74.js.map +1 -1
  107. package/dist/index75.cjs +87 -143
  108. package/dist/index75.cjs.map +1 -1
  109. package/dist/index75.js +23 -0
  110. package/dist/index75.js.map +1 -0
  111. package/dist/index76.cjs +31 -0
  112. package/dist/index76.cjs.map +1 -0
  113. package/dist/index76.js +159 -0
  114. package/dist/index76.js.map +1 -0
  115. package/dist/index77.cjs +161 -0
  116. package/dist/index77.cjs.map +1 -0
  117. package/dist/style.css +150 -0
  118. package/package.json +1 -1
package/dist/index28.cjs CHANGED
@@ -8,9 +8,14 @@ let react_jsx_runtime = require("react/jsx-runtime");
8
8
  let _radix_ui_react_dropdown_menu = require("@radix-ui/react-dropdown-menu");
9
9
  _radix_ui_react_dropdown_menu = require_runtime.__toESM(_radix_ui_react_dropdown_menu, 1);
10
10
  //#region src/components/multi-select/MultiSelect.tsx
11
- var MultiSelect = react.forwardRef(({ options, value, onChange, placeholder = "Select options", fullWidth = true, maxVisibleValues = 2, className, disabled = false, name, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy }, ref) => {
11
+ var MultiSelect = react.forwardRef(({ options, value, onChange, placeholder = "Select options", fullWidth = true, maxVisibleValues = 2, formatValue, bulkActions = false, selectAllLabel = "Select all", clearAllLabel, className, disabled = false, name, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy }, ref) => {
12
12
  const selectedSet = react.useMemo(() => new Set(value), [value]);
13
13
  const selectedOptions = react.useMemo(() => options.filter((opt) => selectedSet.has(opt.value)), [options, selectedSet]);
14
+ const enabledValues = react.useMemo(() => options.filter((option) => !option.disabled).map((option) => option.value), [options]);
15
+ const allEnabledSelected = enabledValues.length > 0 && enabledValues.every((entry) => selectedSet.has(entry));
16
+ const hasDisabledOptions = options.some((option) => option.disabled);
17
+ const resolvedClearAllLabel = clearAllLabel ?? (hasDisabledOptions ? "Clear enabled" : "Clear all");
18
+ const formattedValue = react.useMemo(() => formatValue?.(selectedOptions), [formatValue, selectedOptions]);
14
19
  const toggleValue = react.useCallback((nextValue) => {
15
20
  if (selectedSet.has(nextValue)) {
16
21
  onChange(value.filter((entry) => entry !== nextValue));
@@ -41,12 +46,19 @@ var MultiSelect = react.forwardRef(({ options, value, onChange, placeholder = "S
41
46
  disabled,
42
47
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
43
48
  className: require_multi_select_module.default.value,
44
- children: selectedOptions.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
49
+ children: formatValue ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
50
+ className: require_multi_select_module.default.summary,
51
+ children: formattedValue
52
+ }) : selectedOptions.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
45
53
  className: require_multi_select_module.default.placeholder,
46
54
  children: placeholder
47
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [visibleOptions.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
55
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [visibleOptions.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
48
56
  className: require_multi_select_module.default.chip,
49
- children: option.label
57
+ children: [option.icon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
58
+ className: require_multi_select_module.default.optionIcon,
59
+ "aria-hidden": "true",
60
+ children: option.icon
61
+ }) : null, option.label]
50
62
  }, option.value)), overflowCount > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
51
63
  className: require_cx.cx(require_multi_select_module.default.chip, require_multi_select_module.default.chipSummary),
52
64
  children: ["+", overflowCount]
@@ -76,44 +88,69 @@ var MultiSelect = react.forwardRef(({ options, value, onChange, placeholder = "S
76
88
  name,
77
89
  value: entry
78
90
  }, entry)) : null,
79
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dropdown_menu.Portal, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dropdown_menu.Content, {
91
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dropdown_menu.Portal, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_radix_ui_react_dropdown_menu.Content, {
80
92
  className: require_multi_select_module.default.menu,
81
93
  sideOffset: 4,
82
94
  align: "start",
83
- children: options.map((option) => {
84
- const selected = selectedSet.has(option.value);
85
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_radix_ui_react_dropdown_menu.CheckboxItem, {
86
- className: require_cx.cx(require_multi_select_module.default.option, selected && require_multi_select_module.default.optionSelected, option.disabled && require_multi_select_module.default.optionDisabled),
87
- checked: selected,
88
- disabled: option.disabled,
89
- onCheckedChange: () => toggleValue(option.value),
90
- onSelect: (event) => event.preventDefault(),
91
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
92
- className: require_cx.cx(require_multi_select_module.default.indicator, selected && require_multi_select_module.default.indicatorSelected, option.disabled && require_multi_select_module.default.indicatorDisabled),
93
- "aria-hidden": "true",
94
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dropdown_menu.ItemIndicator, {
95
- forceMount: true,
96
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
97
- viewBox: "0 0 16 16",
98
- width: "16",
99
- height: "16",
100
- fill: "none",
101
- xmlns: "http://www.w3.org/2000/svg",
102
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
103
- d: "M3.5 8.5 6.5 11.5 12.5 4.5",
104
- stroke: "currentColor",
105
- strokeWidth: "1.8",
106
- strokeLinecap: "round",
107
- strokeLinejoin: "round"
95
+ children: [
96
+ bulkActions && enabledValues.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dropdown_menu.Item, {
97
+ className: require_multi_select_module.default.bulkAction,
98
+ disabled: allEnabledSelected,
99
+ onSelect: (event) => {
100
+ event.preventDefault();
101
+ onChange([...value, ...enabledValues.filter((entry) => !selectedSet.has(entry))]);
102
+ },
103
+ children: selectAllLabel
104
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dropdown_menu.Item, {
105
+ className: require_multi_select_module.default.bulkAction,
106
+ disabled: !enabledValues.some((entry) => selectedSet.has(entry)),
107
+ onSelect: (event) => {
108
+ event.preventDefault();
109
+ const enabledSet = new Set(enabledValues);
110
+ onChange(value.filter((entry) => !enabledSet.has(entry)));
111
+ },
112
+ children: resolvedClearAllLabel
113
+ })] }) : null,
114
+ bulkActions && enabledValues.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dropdown_menu.Separator, { className: require_multi_select_module.default.separator }) : null,
115
+ options.map((option) => {
116
+ const selected = selectedSet.has(option.value);
117
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_radix_ui_react_dropdown_menu.CheckboxItem, {
118
+ className: require_cx.cx(require_multi_select_module.default.option, selected && require_multi_select_module.default.optionSelected, option.disabled && require_multi_select_module.default.optionDisabled),
119
+ checked: selected,
120
+ disabled: option.disabled,
121
+ onCheckedChange: () => toggleValue(option.value),
122
+ onSelect: (event) => event.preventDefault(),
123
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
124
+ className: require_cx.cx(require_multi_select_module.default.indicator, selected && require_multi_select_module.default.indicatorSelected, option.disabled && require_multi_select_module.default.indicatorDisabled),
125
+ "aria-hidden": "true",
126
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dropdown_menu.ItemIndicator, {
127
+ forceMount: true,
128
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
129
+ viewBox: "0 0 16 16",
130
+ width: "16",
131
+ height: "16",
132
+ fill: "none",
133
+ xmlns: "http://www.w3.org/2000/svg",
134
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
135
+ d: "M3.5 8.5 6.5 11.5 12.5 4.5",
136
+ stroke: "currentColor",
137
+ strokeWidth: "1.8",
138
+ strokeLinecap: "round",
139
+ strokeLinejoin: "round"
140
+ })
108
141
  })
109
142
  })
110
- })
111
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
112
- className: require_multi_select_module.default.optionLabel,
113
- children: option.label
114
- })]
115
- }, option.value);
116
- })
143
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
144
+ className: require_multi_select_module.default.optionLabel,
145
+ children: [option.icon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
146
+ className: require_multi_select_module.default.optionIcon,
147
+ "aria-hidden": "true",
148
+ children: option.icon
149
+ }) : null, option.label]
150
+ })]
151
+ }, option.value);
152
+ })
153
+ ]
117
154
  }) })
118
155
  ]
119
156
  })
@@ -1 +1 @@
1
- {"version":3,"file":"index28.cjs","names":[],"sources":["../src/components/multi-select/MultiSelect.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./multi-select.module.css\";\n\nexport type MultiSelectOption = {\n label: string;\n value: string;\n disabled?: boolean;\n};\n\nexport type MultiSelectProps = {\n options: MultiSelectOption[];\n value: string[];\n onChange: (value: string[]) => void;\n placeholder?: string;\n fullWidth?: boolean;\n maxVisibleValues?: number;\n className?: string;\n disabled?: boolean;\n name?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n};\n\nexport const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(\n (\n {\n options,\n value,\n onChange,\n placeholder = \"Select options\",\n fullWidth = true,\n maxVisibleValues = 2,\n className,\n disabled = false,\n name,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n },\n ref,\n ) => {\n const selectedSet = React.useMemo(() => new Set(value), [value]);\n const selectedOptions = React.useMemo(\n () => options.filter((opt) => selectedSet.has(opt.value)),\n [options, selectedSet],\n );\n\n const toggleValue = React.useCallback(\n (nextValue: string) => {\n if (selectedSet.has(nextValue)) {\n onChange(value.filter((entry) => entry !== nextValue));\n return;\n }\n\n onChange([...value, nextValue]);\n },\n [onChange, selectedSet, value],\n );\n\n const visibleCount = Math.max(1, maxVisibleValues);\n const visibleOptions = selectedOptions.slice(0, visibleCount);\n const overflowCount = Math.max(\n 0,\n selectedOptions.length - visibleOptions.length,\n );\n\n return (\n <DropdownMenuPrimitive.Root modal={false}>\n <div\n className={cx(\n styles.wrapper,\n fullWidth && styles.wrapperFullWidth,\n className,\n )}\n >\n <DropdownMenuPrimitive.Trigger asChild>\n <button\n ref={ref}\n type=\"button\"\n className={styles.trigger}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n disabled={disabled}\n >\n <span className={styles.value}>\n {selectedOptions.length === 0 ? (\n <span className={styles.placeholder}>{placeholder}</span>\n ) : (\n <>\n {visibleOptions.map((option) => (\n <span key={option.value} className={styles.chip}>\n {option.label}\n </span>\n ))}\n {overflowCount > 0 ? (\n <span\n className={cx(\n styles.chip,\n styles.chipSummary,\n )}\n >\n +{overflowCount}\n </span>\n ) : null}\n </>\n )}\n </span>\n <span className={styles.chevron} aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"10\"\n >\n <path\n d=\"M2 3.5L5 6.5L8 3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </button>\n </DropdownMenuPrimitive.Trigger>\n\n {name\n ? value.map((entry) => (\n <input key={entry} type=\"hidden\" name={name} value={entry} />\n ))\n : null}\n\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n className={styles.menu}\n sideOffset={4}\n align=\"start\"\n >\n {options.map((option) => {\n const selected = selectedSet.has(option.value);\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n key={option.value}\n className={cx(\n styles.option,\n selected && styles.optionSelected,\n option.disabled && styles.optionDisabled,\n )}\n checked={selected}\n disabled={option.disabled}\n onCheckedChange={() => toggleValue(option.value)}\n onSelect={(event) => event.preventDefault()}\n >\n <span\n className={cx(\n styles.indicator,\n selected && styles.indicatorSelected,\n option.disabled && styles.indicatorDisabled,\n )}\n aria-hidden=\"true\"\n >\n <DropdownMenuPrimitive.ItemIndicator forceMount>\n <svg\n viewBox=\"0 0 16 16\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.5 8.5 6.5 11.5 12.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n <span className={styles.optionLabel}>{option.label}</span>\n </DropdownMenuPrimitive.CheckboxItem>\n );\n })}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </div>\n </DropdownMenuPrimitive.Root>\n );\n },\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"index28.cjs","names":[],"sources":["../src/components/multi-select/MultiSelect.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./multi-select.module.css\";\n\nexport type MultiSelectOption = {\n label: string;\n value: string;\n disabled?: boolean;\n /** Optional decorative leading visual. The label remains the accessible option name. */\n icon?: React.ReactElement;\n};\n\nexport type MultiSelectProps = {\n options: MultiSelectOption[];\n value: string[];\n onChange: (value: string[]) => void;\n placeholder?: string;\n fullWidth?: boolean;\n maxVisibleValues?: number;\n /** Formats the closed trigger text from the selected options, including an empty selection. */\n formatValue?: (selected: MultiSelectOption[]) => string;\n /** Shows Select all and Clear all actions. Bulk actions modify enabled options only. */\n bulkActions?: boolean;\n selectAllLabel?: string;\n /** Label for clearing all enabled selections. Disabled selected options remain selected. */\n clearAllLabel?: string;\n className?: string;\n disabled?: boolean;\n name?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n};\n\nexport const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(\n (\n {\n options,\n value,\n onChange,\n placeholder = \"Select options\",\n fullWidth = true,\n maxVisibleValues = 2,\n formatValue,\n bulkActions = false,\n selectAllLabel = \"Select all\",\n clearAllLabel,\n className,\n disabled = false,\n name,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n },\n ref,\n ) => {\n const selectedSet = React.useMemo(() => new Set(value), [value]);\n const selectedOptions = React.useMemo(\n () => options.filter((opt) => selectedSet.has(opt.value)),\n [options, selectedSet],\n );\n\n const enabledValues = React.useMemo(\n () => options.filter((option) => !option.disabled).map((option) => option.value),\n [options],\n );\n const allEnabledSelected =\n enabledValues.length > 0 && enabledValues.every((entry) => selectedSet.has(entry));\n const hasDisabledOptions = options.some((option) => option.disabled);\n const resolvedClearAllLabel =\n clearAllLabel ?? (hasDisabledOptions ? \"Clear enabled\" : \"Clear all\");\n\n const formattedValue = React.useMemo(\n () => formatValue?.(selectedOptions),\n [formatValue, selectedOptions],\n );\n\n const toggleValue = React.useCallback(\n (nextValue: string) => {\n if (selectedSet.has(nextValue)) {\n onChange(value.filter((entry) => entry !== nextValue));\n return;\n }\n\n onChange([...value, nextValue]);\n },\n [onChange, selectedSet, value],\n );\n\n const visibleCount = Math.max(1, maxVisibleValues);\n const visibleOptions = selectedOptions.slice(0, visibleCount);\n const overflowCount = Math.max(\n 0,\n selectedOptions.length - visibleOptions.length,\n );\n\n return (\n <DropdownMenuPrimitive.Root modal={false}>\n <div\n className={cx(\n styles.wrapper,\n fullWidth && styles.wrapperFullWidth,\n className,\n )}\n >\n <DropdownMenuPrimitive.Trigger asChild>\n <button\n ref={ref}\n type=\"button\"\n className={styles.trigger}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n disabled={disabled}\n >\n <span className={styles.value}>\n {formatValue ? (\n <span className={styles.summary}>{formattedValue}</span>\n ) : selectedOptions.length === 0 ? (\n <span className={styles.placeholder}>{placeholder}</span>\n ) : (\n <>\n {visibleOptions.map((option) => (\n <span key={option.value} className={styles.chip}>\n {option.icon ? <span className={styles.optionIcon} aria-hidden=\"true\">{option.icon}</span> : null}\n {option.label}\n </span>\n ))}\n {overflowCount > 0 ? (\n <span className={cx(styles.chip, styles.chipSummary)}>\n +{overflowCount}\n </span>\n ) : null}\n </>\n )}\n </span>\n <span className={styles.chevron} aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"10\"\n >\n <path\n d=\"M2 3.5L5 6.5L8 3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </button>\n </DropdownMenuPrimitive.Trigger>\n\n {name\n ? value.map((entry) => (\n <input key={entry} type=\"hidden\" name={name} value={entry} />\n ))\n : null}\n\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n className={styles.menu}\n sideOffset={4}\n align=\"start\"\n >\n {bulkActions && enabledValues.length > 0 ? (\n <>\n <DropdownMenuPrimitive.Item\n className={styles.bulkAction}\n disabled={allEnabledSelected}\n onSelect={(event) => {\n event.preventDefault();\n onChange([...value, ...enabledValues.filter((entry) => !selectedSet.has(entry))]);\n }}\n >\n {selectAllLabel}\n </DropdownMenuPrimitive.Item>\n <DropdownMenuPrimitive.Item\n className={styles.bulkAction}\n disabled={!enabledValues.some((entry) => selectedSet.has(entry))}\n onSelect={(event) => {\n event.preventDefault();\n const enabledSet = new Set(enabledValues);\n onChange(value.filter((entry) => !enabledSet.has(entry)));\n }}\n >\n {resolvedClearAllLabel}\n </DropdownMenuPrimitive.Item>\n </>\n ) : null}\n {bulkActions && enabledValues.length > 0 ? (\n <DropdownMenuPrimitive.Separator className={styles.separator} />\n ) : null}\n {options.map((option) => {\n const selected = selectedSet.has(option.value);\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n key={option.value}\n className={cx(\n styles.option,\n selected && styles.optionSelected,\n option.disabled && styles.optionDisabled,\n )}\n checked={selected}\n disabled={option.disabled}\n onCheckedChange={() => toggleValue(option.value)}\n onSelect={(event) => event.preventDefault()}\n >\n <span\n className={cx(\n styles.indicator,\n selected && styles.indicatorSelected,\n option.disabled && styles.indicatorDisabled,\n )}\n aria-hidden=\"true\"\n >\n <DropdownMenuPrimitive.ItemIndicator forceMount>\n <svg\n viewBox=\"0 0 16 16\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.5 8.5 6.5 11.5 12.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n <span className={styles.optionLabel}>\n {option.icon ? <span className={styles.optionIcon} aria-hidden=\"true\">{option.icon}</span> : null}\n {option.label}\n </span>\n </DropdownMenuPrimitive.CheckboxItem>\n );\n })}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </div>\n </DropdownMenuPrimitive.Root>\n );\n },\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n"],"mappings":"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"}
package/dist/index53.js CHANGED
@@ -1,21 +1,31 @@
1
- //#region src/components/stat/stat.module.css
2
- var stat = "uzi-stat-module__stat__R4Ke6";
3
- var label = "uzi-stat-module__label__MSJ0Q";
4
- var value = "uzi-stat-module__value__nSd-e";
5
- var detail = "uzi-stat-module__detail__eB2As";
6
- var group = "uzi-stat-module__group__Hb6Bh";
7
- var stat_module_default = {
8
- stat,
1
+ //#region src/components/conversation/conversation.module.css
2
+ var root = "uzi-conversation-module__root__0Sor6";
3
+ var header = "uzi-conversation-module__header__Qsxrb";
4
+ var attachments = "uzi-conversation-module__attachments__bOZvJ";
5
+ var composer = "uzi-conversation-module__composer__DsGDz";
6
+ var messages = "uzi-conversation-module__messages__onvAy";
7
+ var message = "uzi-conversation-module__message__y1o-R";
8
+ var assistant = "uzi-conversation-module__assistant__ZpASb";
9
+ var system = "uzi-conversation-module__system__Ub04L";
10
+ var user = "uzi-conversation-module__user__wonj7";
11
+ var label = "uzi-conversation-module__label__139uJ";
12
+ var bubble = "uzi-conversation-module__bubble__kBvwU";
13
+ var status = "uzi-conversation-module__status__GSYd0";
14
+ var conversation_module_default = {
15
+ root,
16
+ header,
17
+ attachments,
18
+ composer,
19
+ messages,
20
+ message,
21
+ assistant,
22
+ system,
23
+ user,
9
24
  label,
10
- value,
11
- detail,
12
- group,
13
- "columns-1": "uzi-stat-module__columns-1__HYln2",
14
- "columns-2": "uzi-stat-module__columns-2__SMKHs",
15
- "columns-3": "uzi-stat-module__columns-3__97hX7",
16
- "columns-4": "uzi-stat-module__columns-4__0eN97"
25
+ bubble,
26
+ status
17
27
  };
18
28
  //#endregion
19
- export { stat_module_default as default, detail, group, label, stat, value };
29
+ export { assistant, attachments, bubble, composer, conversation_module_default as default, header, label, message, messages, root, status, system, user };
20
30
 
21
31
  //# sourceMappingURL=index53.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index53.js","names":[],"sources":["../src/components/stat/stat.module.css"],"sourcesContent":[".stat {\n min-width: 0;\n display: grid;\n gap: 0.25rem;\n}\n\n.label {\n color: var(--uzi-text-secondary, var(--muted-foreground));\n font-size: var(--uzi-font-small, 0.8125rem);\n font-weight: 600;\n}\n\n.value {\n color: var(--uzi-text-primary, var(--foreground));\n font-size: var(--uzi-font-title, clamp(1.375rem, 2.5vw, 1.875rem));\n font-weight: 700;\n line-height: 1.15;\n}\n\n.detail {\n color: var(--uzi-text-muted, var(--muted-foreground));\n font-size: var(--uzi-font-small, 0.8125rem);\n line-height: 1.5;\n}\n\n.group {\n display: grid;\n gap: var(--uzi-space-4, 1rem);\n}\n\n.columns-1 { grid-template-columns: 1fr; }\n.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n.columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }\n.columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n\n@media (max-width: 48rem) {\n .columns-3,\n .columns-4 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n@media (max-width: 32rem) {\n .columns-2,\n .columns-3,\n .columns-4 {\n grid-template-columns: 1fr;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index53.js","names":[],"sources":["../src/components/conversation/conversation.module.css"],"sourcesContent":[".root {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n height: 100%;\n overflow: hidden;\n background: var(--uzi-surface-base, var(--background));\n color: var(--uzi-text-primary, var(--foreground));\n}\n\n.header,\n.attachments,\n.composer {\n flex-shrink: 0;\n background: var(--uzi-surface-subtle, var(--muted));\n}\n\n.header {\n border-bottom: 1px solid var(--uzi-border-default, var(--border));\n}\n\n.attachments,\n.composer {\n border-top: 1px solid var(--uzi-border-default, var(--border));\n}\n\n.messages {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: var(--uzi-space-4, 1rem);\n}\n\n.message {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: 100%;\n margin-bottom: var(--uzi-space-4, 1rem);\n}\n\n.assistant,\n.system {\n align-items: flex-start;\n}\n\n.user {\n align-items: flex-end;\n}\n\n.label {\n margin-bottom: var(--uzi-space-1, 0.25rem);\n color: var(--uzi-text-secondary, var(--muted-foreground));\n font-size: var(--uzi-font-xs, 0.6875rem);\n font-weight: 600;\n}\n\n.bubble {\n min-width: 0;\n max-width: min(100%, 52rem);\n border-radius: var(--uzi-radius-lg, 0.875rem);\n padding: var(--uzi-space-3, 0.75rem) var(--uzi-space-3, 0.75rem);\n font-size: var(--uzi-font-body, 0.875rem);\n line-height: 1.55;\n overflow-wrap: anywhere;\n}\n\n.assistant .bubble,\n.system .bubble {\n border: 1px solid var(--uzi-border-default, var(--border));\n background: var(--uzi-surface-subtle, var(--muted));\n}\n\n.user .bubble {\n max-width: min(82%, 44rem);\n background: var(--uzi-accent-primary, var(--primary));\n color: var(--uzi-text-on-accent, var(--primary-foreground));\n}\n\n.status {\n color: var(--uzi-text-secondary, var(--muted-foreground));\n font-size: var(--uzi-font-small, 0.75rem);\n}\n\n@media (max-width: 720px) {\n .messages {\n padding: var(--uzi-space-3, 0.75rem);\n }\n\n .user .bubble {\n max-width: 92%;\n }\n}\n"],"mappings":""}
package/dist/index54.cjs CHANGED
@@ -1,26 +1,43 @@
1
- //#region src/components/stat/stat.module.css
2
- var stat = "uzi-stat-module__stat__R4Ke6";
3
- var label = "uzi-stat-module__label__MSJ0Q";
4
- var value = "uzi-stat-module__value__nSd-e";
5
- var detail = "uzi-stat-module__detail__eB2As";
6
- var group = "uzi-stat-module__group__Hb6Bh";
7
- var stat_module_default = {
8
- stat,
1
+ //#region src/components/conversation/conversation.module.css
2
+ var root = "uzi-conversation-module__root__0Sor6";
3
+ var header = "uzi-conversation-module__header__Qsxrb";
4
+ var attachments = "uzi-conversation-module__attachments__bOZvJ";
5
+ var composer = "uzi-conversation-module__composer__DsGDz";
6
+ var messages = "uzi-conversation-module__messages__onvAy";
7
+ var message = "uzi-conversation-module__message__y1o-R";
8
+ var assistant = "uzi-conversation-module__assistant__ZpASb";
9
+ var system = "uzi-conversation-module__system__Ub04L";
10
+ var user = "uzi-conversation-module__user__wonj7";
11
+ var label = "uzi-conversation-module__label__139uJ";
12
+ var bubble = "uzi-conversation-module__bubble__kBvwU";
13
+ var status = "uzi-conversation-module__status__GSYd0";
14
+ var conversation_module_default = {
15
+ root,
16
+ header,
17
+ attachments,
18
+ composer,
19
+ messages,
20
+ message,
21
+ assistant,
22
+ system,
23
+ user,
9
24
  label,
10
- value,
11
- detail,
12
- group,
13
- "columns-1": "uzi-stat-module__columns-1__HYln2",
14
- "columns-2": "uzi-stat-module__columns-2__SMKHs",
15
- "columns-3": "uzi-stat-module__columns-3__97hX7",
16
- "columns-4": "uzi-stat-module__columns-4__0eN97"
25
+ bubble,
26
+ status
17
27
  };
18
28
  //#endregion
19
- exports.default = stat_module_default;
20
- exports.detail = detail;
21
- exports.group = group;
29
+ exports.assistant = assistant;
30
+ exports.attachments = attachments;
31
+ exports.bubble = bubble;
32
+ exports.composer = composer;
33
+ exports.default = conversation_module_default;
34
+ exports.header = header;
22
35
  exports.label = label;
23
- exports.stat = stat;
24
- exports.value = value;
36
+ exports.message = message;
37
+ exports.messages = messages;
38
+ exports.root = root;
39
+ exports.status = status;
40
+ exports.system = system;
41
+ exports.user = user;
25
42
 
26
43
  //# sourceMappingURL=index54.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index54.cjs","names":[],"sources":["../src/components/stat/stat.module.css"],"sourcesContent":[".stat {\n min-width: 0;\n display: grid;\n gap: 0.25rem;\n}\n\n.label {\n color: var(--uzi-text-secondary, var(--muted-foreground));\n font-size: var(--uzi-font-small, 0.8125rem);\n font-weight: 600;\n}\n\n.value {\n color: var(--uzi-text-primary, var(--foreground));\n font-size: var(--uzi-font-title, clamp(1.375rem, 2.5vw, 1.875rem));\n font-weight: 700;\n line-height: 1.15;\n}\n\n.detail {\n color: var(--uzi-text-muted, var(--muted-foreground));\n font-size: var(--uzi-font-small, 0.8125rem);\n line-height: 1.5;\n}\n\n.group {\n display: grid;\n gap: var(--uzi-space-4, 1rem);\n}\n\n.columns-1 { grid-template-columns: 1fr; }\n.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n.columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }\n.columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n\n@media (max-width: 48rem) {\n .columns-3,\n .columns-4 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n@media (max-width: 32rem) {\n .columns-2,\n .columns-3,\n .columns-4 {\n grid-template-columns: 1fr;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index54.cjs","names":[],"sources":["../src/components/conversation/conversation.module.css"],"sourcesContent":[".root {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n height: 100%;\n overflow: hidden;\n background: var(--uzi-surface-base, var(--background));\n color: var(--uzi-text-primary, var(--foreground));\n}\n\n.header,\n.attachments,\n.composer {\n flex-shrink: 0;\n background: var(--uzi-surface-subtle, var(--muted));\n}\n\n.header {\n border-bottom: 1px solid var(--uzi-border-default, var(--border));\n}\n\n.attachments,\n.composer {\n border-top: 1px solid var(--uzi-border-default, var(--border));\n}\n\n.messages {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: var(--uzi-space-4, 1rem);\n}\n\n.message {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: 100%;\n margin-bottom: var(--uzi-space-4, 1rem);\n}\n\n.assistant,\n.system {\n align-items: flex-start;\n}\n\n.user {\n align-items: flex-end;\n}\n\n.label {\n margin-bottom: var(--uzi-space-1, 0.25rem);\n color: var(--uzi-text-secondary, var(--muted-foreground));\n font-size: var(--uzi-font-xs, 0.6875rem);\n font-weight: 600;\n}\n\n.bubble {\n min-width: 0;\n max-width: min(100%, 52rem);\n border-radius: var(--uzi-radius-lg, 0.875rem);\n padding: var(--uzi-space-3, 0.75rem) var(--uzi-space-3, 0.75rem);\n font-size: var(--uzi-font-body, 0.875rem);\n line-height: 1.55;\n overflow-wrap: anywhere;\n}\n\n.assistant .bubble,\n.system .bubble {\n border: 1px solid var(--uzi-border-default, var(--border));\n background: var(--uzi-surface-subtle, var(--muted));\n}\n\n.user .bubble {\n max-width: min(82%, 44rem);\n background: var(--uzi-accent-primary, var(--primary));\n color: var(--uzi-text-on-accent, var(--primary-foreground));\n}\n\n.status {\n color: var(--uzi-text-secondary, var(--muted-foreground));\n font-size: var(--uzi-font-small, 0.75rem);\n}\n\n@media (max-width: 720px) {\n .messages {\n padding: var(--uzi-space-3, 0.75rem);\n }\n\n .user .bubble {\n max-width: 92%;\n }\n}\n"],"mappings":""}
package/dist/index54.js CHANGED
@@ -1,35 +1,69 @@
1
+ "use client";
1
2
  import { cx } from "./index3.js";
2
- import stat_module_default from "./index53.js";
3
+ import conversation_module_default from "./index53.js";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
- //#region src/components/stat/Stat.tsx
5
- function Stat({ label, value, detail, className, ...rest }) {
5
+ //#region src/components/conversation/Conversation.tsx
6
+ function Conversation({ children, className, ...props }) {
7
+ return /* @__PURE__ */ jsx("div", {
8
+ className: cx(conversation_module_default.root, className),
9
+ ...props,
10
+ children
11
+ });
12
+ }
13
+ function ConversationHeader({ children, className, ...props }) {
14
+ return /* @__PURE__ */ jsx("header", {
15
+ className: cx(conversation_module_default.header, className),
16
+ ...props,
17
+ children
18
+ });
19
+ }
20
+ function ConversationMessages({ children, className, role = "log", ...props }) {
21
+ return /* @__PURE__ */ jsx("div", {
22
+ className: cx(conversation_module_default.messages, className),
23
+ role,
24
+ "aria-live": "polite",
25
+ ...props,
26
+ children
27
+ });
28
+ }
29
+ function ConversationMessage({ children, role, label, className, ...props }) {
6
30
  return /* @__PURE__ */ jsxs("div", {
7
- className: cx(stat_module_default.stat, className),
8
- ...rest,
9
- children: [
10
- /* @__PURE__ */ jsx("div", {
11
- className: stat_module_default.label,
12
- children: label
13
- }),
14
- /* @__PURE__ */ jsx("div", {
15
- className: stat_module_default.value,
16
- children: value
17
- }),
18
- detail && /* @__PURE__ */ jsx("div", {
19
- className: stat_module_default.detail,
20
- children: detail
21
- })
22
- ]
31
+ className: cx(conversation_module_default.message, conversation_module_default[role], className),
32
+ "data-role": role,
33
+ ...props,
34
+ children: [label && /* @__PURE__ */ jsx("div", {
35
+ className: conversation_module_default.label,
36
+ children: label
37
+ }), /* @__PURE__ */ jsx("div", {
38
+ className: conversation_module_default.bubble,
39
+ children
40
+ })]
41
+ });
42
+ }
43
+ function ConversationStatus({ children, className, ...props }) {
44
+ return /* @__PURE__ */ jsx("div", {
45
+ className: cx(conversation_module_default.status, className),
46
+ role: "status",
47
+ "aria-live": "polite",
48
+ ...props,
49
+ children
50
+ });
51
+ }
52
+ function ConversationAttachments({ children, className, ...props }) {
53
+ return /* @__PURE__ */ jsx("div", {
54
+ className: cx(conversation_module_default.attachments, className),
55
+ ...props,
56
+ children
23
57
  });
24
58
  }
25
- function StatGroup({ columns = 3, className, children, ...rest }) {
59
+ function ConversationComposer({ children, className, ...props }) {
26
60
  return /* @__PURE__ */ jsx("div", {
27
- className: cx(stat_module_default.group, stat_module_default[`columns-${columns}`], className),
28
- ...rest,
61
+ className: cx(conversation_module_default.composer, className),
62
+ ...props,
29
63
  children
30
64
  });
31
65
  }
32
66
  //#endregion
33
- export { Stat, StatGroup };
67
+ export { Conversation, ConversationAttachments, ConversationComposer, ConversationHeader, ConversationMessage, ConversationMessages, ConversationStatus };
34
68
 
35
69
  //# sourceMappingURL=index54.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index54.js","names":[],"sources":["../src/components/stat/Stat.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./stat.module.css\";\n\nexport type StatProps = HTMLAttributes<HTMLDivElement> & {\n label: ReactNode;\n value: ReactNode;\n detail?: ReactNode;\n};\n\nexport function Stat({ label, value, detail, className, ...rest }: StatProps) {\n return (\n <div className={cx(styles.stat, className)} {...rest}>\n <div className={styles.label}>{label}</div>\n <div className={styles.value}>{value}</div>\n {detail && <div className={styles.detail}>{detail}</div>}\n </div>\n );\n}\n\nexport type StatGroupProps = HTMLAttributes<HTMLDivElement> & {\n columns?: 1 | 2 | 3 | 4;\n};\n\nexport function StatGroup({ columns = 3, className, children, ...rest }: StatGroupProps) {\n return (\n <div\n className={cx(styles.group, styles[`columns-${columns}`], className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n"],"mappings":";;;;AAUA,SAAgB,KAAK,EAAE,OAAO,OAAO,QAAQ,WAAW,GAAG,QAAmB;CAC5E,OACE,qBAAC,OAAD;EAAK,WAAW,GAAG,oBAAO,MAAM,SAAS;EAAG,GAAI;YAAhD;GACE,oBAAC,OAAD;IAAK,WAAW,oBAAO;cAAQ;GAAW,CAAA;GAC1C,oBAAC,OAAD;IAAK,WAAW,oBAAO;cAAQ;GAAW,CAAA;GACzC,UAAU,oBAAC,OAAD;IAAK,WAAW,oBAAO;cAAS;GAAY,CAAA;EACpD;;AAET;AAMA,SAAgB,UAAU,EAAE,UAAU,GAAG,WAAW,UAAU,GAAG,QAAwB;CACvF,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,oBAAO,OAAO,oBAAO,WAAW,YAAY,SAAS;EACnE,GAAI;EAEH;CACE,CAAA;AAET"}
1
+ {"version":3,"file":"index54.js","names":[],"sources":["../src/components/conversation/Conversation.tsx"],"sourcesContent":["\"use client\";\n\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./conversation.module.css\";\n\nexport type ConversationRole = \"assistant\" | \"user\" | \"system\";\n\nexport interface ConversationProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function Conversation({ children, className, ...props }: ConversationProps) {\n return <div className={cx(styles.root, className)} {...props}>{children}</div>;\n}\n\nexport function ConversationHeader({ children, className, ...props }: ConversationProps) {\n return <header className={cx(styles.header, className)} {...props}>{children}</header>;\n}\n\nexport function ConversationMessages({ children, className, role = \"log\", ...props }: ConversationProps) {\n return <div className={cx(styles.messages, className)} role={role} aria-live=\"polite\" {...props}>{children}</div>;\n}\n\nexport interface ConversationMessageProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n role: ConversationRole;\n label?: ReactNode;\n}\n\nexport function ConversationMessage({ children, role, label, className, ...props }: ConversationMessageProps) {\n return (\n <div className={cx(styles.message, styles[role], className)} data-role={role} {...props}>\n {label && <div className={styles.label}>{label}</div>}\n <div className={styles.bubble}>{children}</div>\n </div>\n );\n}\n\nexport function ConversationStatus({ children, className, ...props }: ConversationProps) {\n return <div className={cx(styles.status, className)} role=\"status\" aria-live=\"polite\" {...props}>{children}</div>;\n}\n\nexport function ConversationAttachments({ children, className, ...props }: ConversationProps) {\n return <div className={cx(styles.attachments, className)} {...props}>{children}</div>;\n}\n\nexport function ConversationComposer({ children, className, ...props }: ConversationProps) {\n return <div className={cx(styles.composer, className)} {...props}>{children}</div>;\n}\n"],"mappings":";;;;;AAYA,SAAgB,aAAa,EAAE,UAAU,WAAW,GAAG,SAA4B;CACjF,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,4BAAO,MAAM,SAAS;EAAG,GAAI;EAAQ;CAAc,CAAA;AAC/E;AAEA,SAAgB,mBAAmB,EAAE,UAAU,WAAW,GAAG,SAA4B;CACvF,OAAO,oBAAC,UAAD;EAAQ,WAAW,GAAG,4BAAO,QAAQ,SAAS;EAAG,GAAI;EAAQ;CAAiB,CAAA;AACvF;AAEA,SAAgB,qBAAqB,EAAE,UAAU,WAAW,OAAO,OAAO,GAAG,SAA4B;CACvG,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,4BAAO,UAAU,SAAS;EAAS;EAAM,aAAU;EAAS,GAAI;EAAQ;CAAc,CAAA;AAClH;AAQA,SAAgB,oBAAoB,EAAE,UAAU,MAAM,OAAO,WAAW,GAAG,SAAmC;CAC5G,OACE,qBAAC,OAAD;EAAK,WAAW,GAAG,4BAAO,SAAS,4BAAO,OAAO,SAAS;EAAG,aAAW;EAAM,GAAI;YAAlF,CACG,SAAS,oBAAC,OAAD;GAAK,WAAW,4BAAO;aAAQ;EAAW,CAAA,GACpD,oBAAC,OAAD;GAAK,WAAW,4BAAO;GAAS;EAAc,CAAA,CAC3C;;AAET;AAEA,SAAgB,mBAAmB,EAAE,UAAU,WAAW,GAAG,SAA4B;CACvF,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,4BAAO,QAAQ,SAAS;EAAG,MAAK;EAAS,aAAU;EAAS,GAAI;EAAQ;CAAc,CAAA;AAClH;AAEA,SAAgB,wBAAwB,EAAE,UAAU,WAAW,GAAG,SAA4B;CAC5F,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,4BAAO,aAAa,SAAS;EAAG,GAAI;EAAQ;CAAc,CAAA;AACtF;AAEA,SAAgB,qBAAqB,EAAE,UAAU,WAAW,GAAG,SAA4B;CACzF,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,4BAAO,UAAU,SAAS;EAAG,GAAI;EAAQ;CAAc,CAAA;AACnF"}
package/dist/index55.cjs CHANGED
@@ -1,36 +1,75 @@
1
+ "use client";
1
2
  const require_cx = require("./index4.cjs");
2
- const require_stat_module = require("./index54.cjs");
3
+ const require_conversation_module = require("./index54.cjs");
3
4
  let react_jsx_runtime = require("react/jsx-runtime");
4
- //#region src/components/stat/Stat.tsx
5
- function Stat({ label, value, detail, className, ...rest }) {
5
+ //#region src/components/conversation/Conversation.tsx
6
+ function Conversation({ children, className, ...props }) {
7
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8
+ className: require_cx.cx(require_conversation_module.default.root, className),
9
+ ...props,
10
+ children
11
+ });
12
+ }
13
+ function ConversationHeader({ children, className, ...props }) {
14
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
15
+ className: require_cx.cx(require_conversation_module.default.header, className),
16
+ ...props,
17
+ children
18
+ });
19
+ }
20
+ function ConversationMessages({ children, className, role = "log", ...props }) {
21
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
22
+ className: require_cx.cx(require_conversation_module.default.messages, className),
23
+ role,
24
+ "aria-live": "polite",
25
+ ...props,
26
+ children
27
+ });
28
+ }
29
+ function ConversationMessage({ children, role, label, className, ...props }) {
6
30
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7
- className: require_cx.cx(require_stat_module.default.stat, className),
8
- ...rest,
9
- children: [
10
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
11
- className: require_stat_module.default.label,
12
- children: label
13
- }),
14
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
15
- className: require_stat_module.default.value,
16
- children: value
17
- }),
18
- detail && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
19
- className: require_stat_module.default.detail,
20
- children: detail
21
- })
22
- ]
31
+ className: require_cx.cx(require_conversation_module.default.message, require_conversation_module.default[role], className),
32
+ "data-role": role,
33
+ ...props,
34
+ children: [label && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
35
+ className: require_conversation_module.default.label,
36
+ children: label
37
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
38
+ className: require_conversation_module.default.bubble,
39
+ children
40
+ })]
41
+ });
42
+ }
43
+ function ConversationStatus({ children, className, ...props }) {
44
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
45
+ className: require_cx.cx(require_conversation_module.default.status, className),
46
+ role: "status",
47
+ "aria-live": "polite",
48
+ ...props,
49
+ children
50
+ });
51
+ }
52
+ function ConversationAttachments({ children, className, ...props }) {
53
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
54
+ className: require_cx.cx(require_conversation_module.default.attachments, className),
55
+ ...props,
56
+ children
23
57
  });
24
58
  }
25
- function StatGroup({ columns = 3, className, children, ...rest }) {
59
+ function ConversationComposer({ children, className, ...props }) {
26
60
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
27
- className: require_cx.cx(require_stat_module.default.group, require_stat_module.default[`columns-${columns}`], className),
28
- ...rest,
61
+ className: require_cx.cx(require_conversation_module.default.composer, className),
62
+ ...props,
29
63
  children
30
64
  });
31
65
  }
32
66
  //#endregion
33
- exports.Stat = Stat;
34
- exports.StatGroup = StatGroup;
67
+ exports.Conversation = Conversation;
68
+ exports.ConversationAttachments = ConversationAttachments;
69
+ exports.ConversationComposer = ConversationComposer;
70
+ exports.ConversationHeader = ConversationHeader;
71
+ exports.ConversationMessage = ConversationMessage;
72
+ exports.ConversationMessages = ConversationMessages;
73
+ exports.ConversationStatus = ConversationStatus;
35
74
 
36
75
  //# sourceMappingURL=index55.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index55.cjs","names":[],"sources":["../src/components/stat/Stat.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./stat.module.css\";\n\nexport type StatProps = HTMLAttributes<HTMLDivElement> & {\n label: ReactNode;\n value: ReactNode;\n detail?: ReactNode;\n};\n\nexport function Stat({ label, value, detail, className, ...rest }: StatProps) {\n return (\n <div className={cx(styles.stat, className)} {...rest}>\n <div className={styles.label}>{label}</div>\n <div className={styles.value}>{value}</div>\n {detail && <div className={styles.detail}>{detail}</div>}\n </div>\n );\n}\n\nexport type StatGroupProps = HTMLAttributes<HTMLDivElement> & {\n columns?: 1 | 2 | 3 | 4;\n};\n\nexport function StatGroup({ columns = 3, className, children, ...rest }: StatGroupProps) {\n return (\n <div\n className={cx(styles.group, styles[`columns-${columns}`], className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n"],"mappings":";;;;AAUA,SAAgB,KAAK,EAAE,OAAO,OAAO,QAAQ,WAAW,GAAG,QAAmB;CAC5E,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,oBAAA,QAAO,MAAM,SAAS;EAAG,GAAI;YAAhD;GACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAW,oBAAA,QAAO;cAAQ;GAAW,CAAA;GAC1C,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAW,oBAAA,QAAO;cAAQ;GAAW,CAAA;GACzC,UAAU,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAW,oBAAA,QAAO;cAAS;GAAY,CAAA;EACpD;;AAET;AAMA,SAAgB,UAAU,EAAE,UAAU,GAAG,WAAW,UAAU,GAAG,QAAwB;CACvF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,WAAW,WAAA,GAAG,oBAAA,QAAO,OAAO,oBAAA,QAAO,WAAW,YAAY,SAAS;EACnE,GAAI;EAEH;CACE,CAAA;AAET"}
1
+ {"version":3,"file":"index55.cjs","names":[],"sources":["../src/components/conversation/Conversation.tsx"],"sourcesContent":["\"use client\";\n\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./conversation.module.css\";\n\nexport type ConversationRole = \"assistant\" | \"user\" | \"system\";\n\nexport interface ConversationProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function Conversation({ children, className, ...props }: ConversationProps) {\n return <div className={cx(styles.root, className)} {...props}>{children}</div>;\n}\n\nexport function ConversationHeader({ children, className, ...props }: ConversationProps) {\n return <header className={cx(styles.header, className)} {...props}>{children}</header>;\n}\n\nexport function ConversationMessages({ children, className, role = \"log\", ...props }: ConversationProps) {\n return <div className={cx(styles.messages, className)} role={role} aria-live=\"polite\" {...props}>{children}</div>;\n}\n\nexport interface ConversationMessageProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n role: ConversationRole;\n label?: ReactNode;\n}\n\nexport function ConversationMessage({ children, role, label, className, ...props }: ConversationMessageProps) {\n return (\n <div className={cx(styles.message, styles[role], className)} data-role={role} {...props}>\n {label && <div className={styles.label}>{label}</div>}\n <div className={styles.bubble}>{children}</div>\n </div>\n );\n}\n\nexport function ConversationStatus({ children, className, ...props }: ConversationProps) {\n return <div className={cx(styles.status, className)} role=\"status\" aria-live=\"polite\" {...props}>{children}</div>;\n}\n\nexport function ConversationAttachments({ children, className, ...props }: ConversationProps) {\n return <div className={cx(styles.attachments, className)} {...props}>{children}</div>;\n}\n\nexport function ConversationComposer({ children, className, ...props }: ConversationProps) {\n return <div className={cx(styles.composer, className)} {...props}>{children}</div>;\n}\n"],"mappings":";;;;;AAYA,SAAgB,aAAa,EAAE,UAAU,WAAW,GAAG,SAA4B;CACjF,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,4BAAA,QAAO,MAAM,SAAS;EAAG,GAAI;EAAQ;CAAc,CAAA;AAC/E;AAEA,SAAgB,mBAAmB,EAAE,UAAU,WAAW,GAAG,SAA4B;CACvF,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;EAAQ,WAAW,WAAA,GAAG,4BAAA,QAAO,QAAQ,SAAS;EAAG,GAAI;EAAQ;CAAiB,CAAA;AACvF;AAEA,SAAgB,qBAAqB,EAAE,UAAU,WAAW,OAAO,OAAO,GAAG,SAA4B;CACvG,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,4BAAA,QAAO,UAAU,SAAS;EAAS;EAAM,aAAU;EAAS,GAAI;EAAQ;CAAc,CAAA;AAClH;AAQA,SAAgB,oBAAoB,EAAE,UAAU,MAAM,OAAO,WAAW,GAAG,SAAmC;CAC5G,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,4BAAA,QAAO,SAAS,4BAAA,QAAO,OAAO,SAAS;EAAG,aAAW;EAAM,GAAI;YAAlF,CACG,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GAAK,WAAW,4BAAA,QAAO;aAAQ;EAAW,CAAA,GACpD,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GAAK,WAAW,4BAAA,QAAO;GAAS;EAAc,CAAA,CAC3C;;AAET;AAEA,SAAgB,mBAAmB,EAAE,UAAU,WAAW,GAAG,SAA4B;CACvF,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,4BAAA,QAAO,QAAQ,SAAS;EAAG,MAAK;EAAS,aAAU;EAAS,GAAI;EAAQ;CAAc,CAAA;AAClH;AAEA,SAAgB,wBAAwB,EAAE,UAAU,WAAW,GAAG,SAA4B;CAC5F,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,4BAAA,QAAO,aAAa,SAAS;EAAG,GAAI;EAAQ;CAAc,CAAA;AACtF;AAEA,SAAgB,qBAAqB,EAAE,UAAU,WAAW,GAAG,SAA4B;CACzF,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,4BAAA,QAAO,UAAU,SAAS;EAAG,GAAI;EAAQ;CAAc,CAAA;AACnF"}
package/dist/index55.js CHANGED
@@ -1,21 +1,21 @@
1
- //#region src/components/toolbar/toolbar.module.css
2
- var toolbar = "uzi-toolbar-module__toolbar__IXW3o";
3
- var sticky = "uzi-toolbar-module__sticky__PxGot";
4
- var group = "uzi-toolbar-module__group__Cw0lk";
5
- var grow = "uzi-toolbar-module__grow__8oFpY";
6
- var label = "uzi-toolbar-module__label__H1fT1";
7
- var controls = "uzi-toolbar-module__controls__EOiOk";
8
- var toolbar_module_default = {
9
- toolbar,
10
- "density-compact": "uzi-toolbar-module__density-compact__qqXRT",
11
- "density-default": "uzi-toolbar-module__density-default__rGiHv",
12
- sticky,
13
- group,
14
- grow,
1
+ //#region src/components/stat/stat.module.css
2
+ var stat = "uzi-stat-module__stat__R4Ke6";
3
+ var label = "uzi-stat-module__label__MSJ0Q";
4
+ var value = "uzi-stat-module__value__nSd-e";
5
+ var detail = "uzi-stat-module__detail__eB2As";
6
+ var group = "uzi-stat-module__group__Hb6Bh";
7
+ var stat_module_default = {
8
+ stat,
15
9
  label,
16
- controls
10
+ value,
11
+ detail,
12
+ group,
13
+ "columns-1": "uzi-stat-module__columns-1__HYln2",
14
+ "columns-2": "uzi-stat-module__columns-2__SMKHs",
15
+ "columns-3": "uzi-stat-module__columns-3__97hX7",
16
+ "columns-4": "uzi-stat-module__columns-4__0eN97"
17
17
  };
18
18
  //#endregion
19
- export { controls, toolbar_module_default as default, group, grow, label, sticky, toolbar };
19
+ export { stat_module_default as default, detail, group, label, stat, value };
20
20
 
21
21
  //# sourceMappingURL=index55.js.map