@mihcm/ui 0.14.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/dist/CheckboxGrid.native.d.ts.map +1 -1
  2. package/dist/CheckboxGrid.native.js +2 -1
  3. package/dist/CheckboxGrid.native.js.map +1 -1
  4. package/dist/Combobox.native.d.ts.map +1 -1
  5. package/dist/Combobox.native.js +2 -1
  6. package/dist/Combobox.native.js.map +1 -1
  7. package/dist/DataTable/column-filter.d.ts +8 -0
  8. package/dist/DataTable/column-filter.d.ts.map +1 -0
  9. package/dist/DataTable/column-filter.js +67 -0
  10. package/dist/DataTable/column-filter.js.map +1 -0
  11. package/dist/DataTable/column-header.d.ts +16 -0
  12. package/dist/DataTable/column-header.d.ts.map +1 -0
  13. package/dist/DataTable/column-header.js +11 -0
  14. package/dist/DataTable/column-header.js.map +1 -0
  15. package/dist/DataTable/column-visibility.d.ts +7 -0
  16. package/dist/DataTable/column-visibility.d.ts.map +1 -0
  17. package/dist/DataTable/column-visibility.js +35 -0
  18. package/dist/DataTable/column-visibility.js.map +1 -0
  19. package/dist/DataTable/index.d.ts +5 -0
  20. package/dist/DataTable/index.d.ts.map +1 -0
  21. package/dist/DataTable/index.js +5 -0
  22. package/dist/DataTable/index.js.map +1 -0
  23. package/dist/DataTable/pinning.d.ts +13 -0
  24. package/dist/DataTable/pinning.d.ts.map +1 -0
  25. package/dist/DataTable/pinning.js +29 -0
  26. package/dist/DataTable/pinning.js.map +1 -0
  27. package/dist/DataTable.d.ts +3 -7
  28. package/dist/DataTable.d.ts.map +1 -1
  29. package/dist/DataTable.js +7 -126
  30. package/dist/DataTable.js.map +1 -1
  31. package/dist/Dialog.native.d.ts +3 -1
  32. package/dist/Dialog.native.d.ts.map +1 -1
  33. package/dist/Dialog.native.js +2 -2
  34. package/dist/Dialog.native.js.map +1 -1
  35. package/dist/Form/building-blocks.d.ts +26 -0
  36. package/dist/Form/building-blocks.d.ts.map +1 -0
  37. package/dist/Form/building-blocks.js +29 -0
  38. package/dist/Form/building-blocks.js.map +1 -0
  39. package/dist/Form/fields-choice.d.ts +72 -0
  40. package/dist/Form/fields-choice.d.ts.map +1 -0
  41. package/dist/Form/fields-choice.js +69 -0
  42. package/dist/Form/fields-choice.js.map +1 -0
  43. package/dist/Form/fields-complex.d.ts +28 -0
  44. package/dist/Form/fields-complex.d.ts.map +1 -0
  45. package/dist/Form/fields-complex.js +38 -0
  46. package/dist/Form/fields-complex.js.map +1 -0
  47. package/dist/Form/fields-date.d.ts +46 -0
  48. package/dist/Form/fields-date.d.ts.map +1 -0
  49. package/dist/Form/fields-date.js +41 -0
  50. package/dist/Form/fields-date.js.map +1 -0
  51. package/dist/Form/fields-text.d.ts +47 -0
  52. package/dist/Form/fields-text.d.ts.map +1 -0
  53. package/dist/Form/fields-text.js +46 -0
  54. package/dist/Form/fields-text.js.map +1 -0
  55. package/dist/Form/fields-toggle.d.ts +24 -0
  56. package/dist/Form/fields-toggle.d.ts.map +1 -0
  57. package/dist/Form/fields-toggle.js +32 -0
  58. package/dist/Form/fields-toggle.js.map +1 -0
  59. package/dist/Form/helpers.d.ts +66 -0
  60. package/dist/Form/helpers.d.ts.map +1 -0
  61. package/dist/Form/helpers.js +44 -0
  62. package/dist/Form/helpers.js.map +1 -0
  63. package/dist/Form/types.d.ts +25 -0
  64. package/dist/Form/types.d.ts.map +1 -0
  65. package/dist/Form/types.js +8 -0
  66. package/dist/Form/types.js.map +1 -0
  67. package/dist/Form.d.ts +24 -298
  68. package/dist/Form.d.ts.map +1 -1
  69. package/dist/Form.js +30 -246
  70. package/dist/Form.js.map +1 -1
  71. package/dist/IconSidebar.d.ts +6 -46
  72. package/dist/IconSidebar.d.ts.map +1 -1
  73. package/dist/IconSidebar.js +6 -116
  74. package/dist/IconSidebar.js.map +1 -1
  75. package/dist/MainSidebar/back-button.d.ts +14 -0
  76. package/dist/MainSidebar/back-button.d.ts.map +1 -0
  77. package/dist/MainSidebar/back-button.js +14 -0
  78. package/dist/MainSidebar/back-button.js.map +1 -0
  79. package/dist/MainSidebar/breadcrumb.d.ts +10 -0
  80. package/dist/MainSidebar/breadcrumb.d.ts.map +1 -0
  81. package/dist/MainSidebar/breadcrumb.js +24 -0
  82. package/dist/MainSidebar/breadcrumb.js.map +1 -0
  83. package/dist/MainSidebar/columns.d.ts +3 -0
  84. package/dist/MainSidebar/columns.d.ts.map +1 -0
  85. package/dist/MainSidebar/columns.js +198 -0
  86. package/dist/MainSidebar/columns.js.map +1 -0
  87. package/dist/MainSidebar/command.d.ts +3 -0
  88. package/dist/MainSidebar/command.d.ts.map +1 -0
  89. package/dist/MainSidebar/command.js +193 -0
  90. package/dist/MainSidebar/command.js.map +1 -0
  91. package/dist/MainSidebar/drilldown.d.ts +3 -0
  92. package/dist/MainSidebar/drilldown.d.ts.map +1 -0
  93. package/dist/MainSidebar/drilldown.js +154 -0
  94. package/dist/MainSidebar/drilldown.js.map +1 -0
  95. package/dist/MainSidebar/expanded.d.ts +7 -0
  96. package/dist/MainSidebar/expanded.d.ts.map +1 -0
  97. package/dist/MainSidebar/expanded.js +102 -0
  98. package/dist/MainSidebar/expanded.js.map +1 -0
  99. package/dist/MainSidebar/floating.d.ts +3 -0
  100. package/dist/MainSidebar/floating.d.ts.map +1 -0
  101. package/dist/MainSidebar/floating.js +116 -0
  102. package/dist/MainSidebar/floating.js.map +1 -0
  103. package/dist/MainSidebar/helpers.d.ts +50 -0
  104. package/dist/MainSidebar/helpers.d.ts.map +1 -0
  105. package/dist/MainSidebar/helpers.js +148 -0
  106. package/dist/MainSidebar/helpers.js.map +1 -0
  107. package/dist/MainSidebar/hover.d.ts +3 -0
  108. package/dist/MainSidebar/hover.d.ts.map +1 -0
  109. package/dist/MainSidebar/hover.js +177 -0
  110. package/dist/MainSidebar/hover.js.map +1 -0
  111. package/dist/MainSidebar/index.d.ts +6 -0
  112. package/dist/MainSidebar/index.d.ts.map +1 -0
  113. package/dist/MainSidebar/index.js +108 -0
  114. package/dist/MainSidebar/index.js.map +1 -0
  115. package/dist/MainSidebar/mobile.d.ts +29 -0
  116. package/dist/MainSidebar/mobile.d.ts.map +1 -0
  117. package/dist/MainSidebar/mobile.js +38 -0
  118. package/dist/MainSidebar/mobile.js.map +1 -0
  119. package/dist/MainSidebar/motion.d.ts +23 -0
  120. package/dist/MainSidebar/motion.d.ts.map +1 -0
  121. package/dist/MainSidebar/motion.js +40 -0
  122. package/dist/MainSidebar/motion.js.map +1 -0
  123. package/dist/MainSidebar/rail.d.ts +24 -0
  124. package/dist/MainSidebar/rail.d.ts.map +1 -0
  125. package/dist/MainSidebar/rail.js +29 -0
  126. package/dist/MainSidebar/rail.js.map +1 -0
  127. package/dist/MainSidebar/search.d.ts +19 -0
  128. package/dist/MainSidebar/search.d.ts.map +1 -0
  129. package/dist/MainSidebar/search.js +33 -0
  130. package/dist/MainSidebar/search.js.map +1 -0
  131. package/dist/MainSidebar/types.d.ts +161 -0
  132. package/dist/MainSidebar/types.d.ts.map +1 -0
  133. package/dist/MainSidebar/types.js +2 -0
  134. package/dist/MainSidebar/types.js.map +1 -0
  135. package/dist/MainSidebar.d.ts +6 -1
  136. package/dist/MainSidebar.d.ts.map +1 -1
  137. package/dist/MainSidebar.js +6 -1
  138. package/dist/MainSidebar.js.map +1 -1
  139. package/dist/NavigationMenu.js +1 -1
  140. package/dist/NavigationMenu.js.map +1 -1
  141. package/dist/RichTextEditor/theme.d.ts +44 -0
  142. package/dist/RichTextEditor/theme.d.ts.map +1 -0
  143. package/dist/RichTextEditor/theme.js +41 -0
  144. package/dist/RichTextEditor/theme.js.map +1 -0
  145. package/dist/RichTextEditor/toolbar-icons.d.ts +21 -0
  146. package/dist/RichTextEditor/toolbar-icons.d.ts.map +1 -0
  147. package/dist/RichTextEditor/toolbar-icons.js +21 -0
  148. package/dist/RichTextEditor/toolbar-icons.js.map +1 -0
  149. package/dist/RichTextEditor/toolbar.d.ts +5 -0
  150. package/dist/RichTextEditor/toolbar.d.ts.map +1 -0
  151. package/dist/RichTextEditor/toolbar.js +116 -0
  152. package/dist/RichTextEditor/toolbar.js.map +1 -0
  153. package/dist/RichTextEditor.d.ts +16 -9
  154. package/dist/RichTextEditor.d.ts.map +1 -1
  155. package/dist/RichTextEditor.js +18 -164
  156. package/dist/RichTextEditor.js.map +1 -1
  157. package/dist/Select/content.d.ts +9 -0
  158. package/dist/Select/content.d.ts.map +1 -0
  159. package/dist/Select/content.js +80 -0
  160. package/dist/Select/content.js.map +1 -0
  161. package/dist/Select/context.d.ts +27 -0
  162. package/dist/Select/context.d.ts.map +1 -0
  163. package/dist/Select/context.js +35 -0
  164. package/dist/Select/context.js.map +1 -0
  165. package/dist/Select/item.d.ts +13 -0
  166. package/dist/Select/item.d.ts.map +1 -0
  167. package/dist/Select/item.js +39 -0
  168. package/dist/Select/item.js.map +1 -0
  169. package/dist/Select/parts.d.ts +14 -0
  170. package/dist/Select/parts.d.ts.map +1 -0
  171. package/dist/Select/parts.js +17 -0
  172. package/dist/Select/parts.js.map +1 -0
  173. package/dist/Select/react-select.d.ts +25 -0
  174. package/dist/Select/react-select.d.ts.map +1 -0
  175. package/dist/Select/react-select.js +66 -0
  176. package/dist/Select/react-select.js.map +1 -0
  177. package/dist/Select/root.d.ts +15 -0
  178. package/dist/Select/root.d.ts.map +1 -0
  179. package/dist/Select/root.js +41 -0
  180. package/dist/Select/root.js.map +1 -0
  181. package/dist/Select/trigger.d.ts +15 -0
  182. package/dist/Select/trigger.d.ts.map +1 -0
  183. package/dist/Select/trigger.js +61 -0
  184. package/dist/Select/trigger.js.map +1 -0
  185. package/dist/Select.d.ts +14 -62
  186. package/dist/Select.d.ts.map +1 -1
  187. package/dist/Select.js +14 -293
  188. package/dist/Select.js.map +1 -1
  189. package/dist/Sidebar/context.d.ts +28 -0
  190. package/dist/Sidebar/context.d.ts.map +1 -0
  191. package/dist/Sidebar/context.js +37 -0
  192. package/dist/Sidebar/context.js.map +1 -0
  193. package/dist/Sidebar/group.d.ts +13 -0
  194. package/dist/Sidebar/group.d.ts.map +1 -0
  195. package/dist/Sidebar/group.js +20 -0
  196. package/dist/Sidebar/group.js.map +1 -0
  197. package/dist/Sidebar/icons.d.ts +7 -0
  198. package/dist/Sidebar/icons.d.ts.map +1 -0
  199. package/dist/Sidebar/icons.js +12 -0
  200. package/dist/Sidebar/icons.js.map +1 -0
  201. package/dist/Sidebar/layout.d.ts +9 -0
  202. package/dist/Sidebar/layout.d.ts.map +1 -0
  203. package/dist/Sidebar/layout.js +21 -0
  204. package/dist/Sidebar/layout.js.map +1 -0
  205. package/dist/Sidebar/menu.d.ts +29 -0
  206. package/dist/Sidebar/menu.d.ts.map +1 -0
  207. package/dist/Sidebar/menu.js +55 -0
  208. package/dist/Sidebar/menu.js.map +1 -0
  209. package/dist/Sidebar/provider.d.ts +33 -0
  210. package/dist/Sidebar/provider.d.ts.map +1 -0
  211. package/dist/Sidebar/provider.js +110 -0
  212. package/dist/Sidebar/provider.js.map +1 -0
  213. package/dist/Sidebar/sidebar.d.ts +17 -0
  214. package/dist/Sidebar/sidebar.d.ts.map +1 -0
  215. package/dist/Sidebar/sidebar.js +51 -0
  216. package/dist/Sidebar/sidebar.js.map +1 -0
  217. package/dist/Sidebar/submenu.d.ts +13 -0
  218. package/dist/Sidebar/submenu.d.ts.map +1 -0
  219. package/dist/Sidebar/submenu.js +17 -0
  220. package/dist/Sidebar/submenu.js.map +1 -0
  221. package/dist/Sidebar/trigger.d.ts +9 -0
  222. package/dist/Sidebar/trigger.d.ts.map +1 -0
  223. package/dist/Sidebar/trigger.js +33 -0
  224. package/dist/Sidebar/trigger.js.map +1 -0
  225. package/dist/Sidebar.d.ts +14 -104
  226. package/dist/Sidebar.d.ts.map +1 -1
  227. package/dist/Sidebar.js +14 -300
  228. package/dist/Sidebar.js.map +1 -1
  229. package/dist/StatCard.d.ts +67 -9
  230. package/dist/StatCard.d.ts.map +1 -1
  231. package/dist/StatCard.js +111 -9
  232. package/dist/StatCard.js.map +1 -1
  233. package/dist/TransferList.native.d.ts.map +1 -1
  234. package/dist/TransferList.native.js +2 -1
  235. package/dist/TransferList.native.js.map +1 -1
  236. package/package.json +2 -2
  237. package/src/CheckboxGrid.native.tsx +2 -1
  238. package/src/Combobox.native.tsx +2 -1
  239. package/src/DataTable/column-filter.tsx +134 -0
  240. package/src/DataTable/column-header.tsx +67 -0
  241. package/src/DataTable/column-visibility.tsx +87 -0
  242. package/src/DataTable/index.ts +4 -0
  243. package/src/DataTable/pinning.ts +40 -0
  244. package/src/DataTable.tsx +14 -297
  245. package/src/Dialog.native.tsx +4 -2
  246. package/src/Form/building-blocks.tsx +97 -0
  247. package/src/Form/fields-choice.tsx +312 -0
  248. package/src/Form/fields-complex.tsx +195 -0
  249. package/src/Form/fields-date.tsx +195 -0
  250. package/src/Form/fields-text.tsx +218 -0
  251. package/src/Form/fields-toggle.tsx +123 -0
  252. package/src/Form/helpers.tsx +189 -0
  253. package/src/Form/types.ts +26 -0
  254. package/src/Form.tsx +91 -1308
  255. package/src/IconSidebar.tsx +20 -442
  256. package/src/MainSidebar/back-button.tsx +58 -0
  257. package/src/MainSidebar/breadcrumb.tsx +53 -0
  258. package/src/MainSidebar/columns.tsx +350 -0
  259. package/src/MainSidebar/command.tsx +404 -0
  260. package/src/MainSidebar/drilldown.tsx +373 -0
  261. package/src/MainSidebar/expanded.tsx +414 -0
  262. package/src/MainSidebar/floating.tsx +268 -0
  263. package/src/MainSidebar/helpers.ts +164 -0
  264. package/src/MainSidebar/hover.tsx +334 -0
  265. package/src/MainSidebar/index.tsx +191 -0
  266. package/src/MainSidebar/mobile.tsx +117 -0
  267. package/src/MainSidebar/motion.ts +64 -0
  268. package/src/MainSidebar/rail.tsx +137 -0
  269. package/src/MainSidebar/search.tsx +99 -0
  270. package/src/MainSidebar/types.ts +208 -0
  271. package/src/MainSidebar.tsx +15 -4
  272. package/src/NavigationMenu.tsx +1 -1
  273. package/src/RichTextEditor/theme.ts +43 -0
  274. package/src/RichTextEditor/toolbar-icons.tsx +40 -0
  275. package/src/RichTextEditor/toolbar.tsx +271 -0
  276. package/src/RichTextEditor.tsx +23 -371
  277. package/src/Select/content.tsx +111 -0
  278. package/src/Select/context.tsx +66 -0
  279. package/src/Select/item.tsx +97 -0
  280. package/src/Select/parts.tsx +43 -0
  281. package/src/Select/react-select.tsx +216 -0
  282. package/src/Select/root.tsx +75 -0
  283. package/src/Select/trigger.tsx +122 -0
  284. package/src/Select.tsx +34 -692
  285. package/src/Sidebar/context.tsx +72 -0
  286. package/src/Sidebar/group.tsx +69 -0
  287. package/src/Sidebar/icons.tsx +42 -0
  288. package/src/Sidebar/layout.tsx +64 -0
  289. package/src/Sidebar/menu.tsx +171 -0
  290. package/src/Sidebar/provider.tsx +224 -0
  291. package/src/Sidebar/sidebar.tsx +178 -0
  292. package/src/Sidebar/submenu.tsx +58 -0
  293. package/src/Sidebar/trigger.tsx +104 -0
  294. package/src/Sidebar.tsx +44 -927
  295. package/src/StatCard.tsx +365 -20
  296. package/src/TransferList.native.tsx +2 -1
  297. package/dist/TiptapEditor.d.ts +0 -24
  298. package/dist/TiptapEditor.d.ts.map +0 -1
  299. package/dist/TiptapEditor.js +0 -84
  300. package/dist/TiptapEditor.js.map +0 -1
package/dist/Select.js CHANGED
@@ -1,11 +1,11 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
2
  /**
4
3
  * Select (web variant — React DOM).
5
4
  *
6
- * Custom composable select dropdown. No native `<select>` or external deps.
5
+ * Composable select dropdown built on top of native focus management no
6
+ * external listbox engine, no native `<select>`. Plus a `react-select`-backed
7
+ * family for searchable / async / multi / creatable cases.
7
8
  *
8
- * Usage:
9
9
  * <Select value={val} onValueChange={setVal}>
10
10
  * <SelectTrigger placeholder="Pick a fruit" />
11
11
  * <SelectContent>
@@ -14,297 +14,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  * </SelectContent>
15
15
  * </Select>
16
16
  *
17
- * Controlled-only: pass `value` / `onValueChange`.
18
- * Keyboard: ArrowDown/Up to navigate, Enter to select, Escape to close.
19
- * WCAG 2.1 AA: role="listbox", role="option", aria-expanded, aria-selected.
17
+ * Controlled-only: pass `value` / `onValueChange`. Keyboard: ArrowDown/Up to
18
+ * navigate, Enter to select, Escape to close. WCAG 2.1 AA: role="listbox",
19
+ * role="option", aria-expanded, aria-selected.
20
+ *
21
+ * Public barrel — implementation split across `./Select/*` per CLAUDE.md §6.
20
22
  *
21
23
  * Wiki: docs/components/Select.md
22
24
  */
23
- import { forwardRef, Children, createContext, isValidElement, useContext, useCallback, useEffect, useRef, useState, } from 'react';
24
- import { cva } from 'class-variance-authority';
25
- import ReactSelectBase, {} from 'react-select';
26
- import ReactAsyncSelectBase, {} from 'react-select/async';
27
- import ReactCreatableSelectBase, {} from 'react-select/creatable';
28
- import ReactAsyncCreatableSelectBase, {} from 'react-select/async-creatable';
29
- import makeAnimated from 'react-select/animated';
30
- import { cn } from './internal/cn.js';
31
- export function getReactSelectAnimatedComponents() {
32
- return makeAnimated();
33
- }
34
- export const reactSelectAnimatedComponents = getReactSelectAnimatedComponents();
35
- const reactSelectClassNames = {
36
- clearIndicator: ({ isFocused }) => cn('rounded-md p-1 text-muted-foreground transition-colors', 'hover:bg-muted hover:text-foreground', isFocused && 'text-foreground'),
37
- control: ({ isDisabled, isFocused }) => cn('min-h-10 rounded-lg border bg-card px-2.5 text-body-sm shadow-mi-input transition-colors', 'hover:border-primary/60', isFocused ? 'border-primary ring-2 ring-ring/20' : 'border-border', isDisabled && 'cursor-not-allowed bg-muted opacity-50'),
38
- dropdownIndicator: ({ isFocused }) => cn('rounded-md p-1 text-muted-foreground transition-colors', 'hover:bg-muted hover:text-foreground', isFocused && 'text-foreground'),
39
- group: () => 'py-1',
40
- groupHeading: () => 'px-2 py-1 text-xs font-semibold text-muted-foreground',
41
- indicatorsContainer: () => 'gap-1',
42
- indicatorSeparator: () => 'mx-1 my-2 w-px self-stretch bg-border',
43
- input: () => 'text-foreground',
44
- loadingIndicator: () => 'text-muted-foreground',
45
- loadingMessage: () => 'px-3 py-6 text-center text-body-sm text-muted-foreground',
46
- menu: () => 'z-50 mt-1 overflow-hidden rounded-lg border border-border bg-card text-card-foreground shadow-mi-input',
47
- menuList: () => 'max-h-72 overflow-y-auto p-1',
48
- multiValue: () => 'm-0.5 inline-flex items-center gap-1 rounded-md bg-muted text-foreground',
49
- multiValueLabel: () => 'px-2 py-0.5 text-xs font-medium',
50
- multiValueRemove: () => cn('rounded-r-md px-1 text-muted-foreground transition-colors', 'hover:bg-destructive hover:text-destructive-foreground'),
51
- noOptionsMessage: () => 'px-3 py-6 text-center text-body-sm text-muted-foreground',
52
- option: ({ isDisabled, isFocused, isSelected }) => cn('cursor-pointer rounded-md px-2 py-1.5 text-body-sm outline-none transition-colors', isFocused && 'bg-muted', isSelected && 'bg-primary text-primary-foreground', isDisabled && 'pointer-events-none cursor-not-allowed opacity-50'),
53
- placeholder: () => 'text-muted-foreground',
54
- singleValue: () => 'text-foreground',
55
- valueContainer: () => 'gap-1 py-1.5',
56
- };
57
- function withReactSelectDefaults(props) {
58
- const { className, classNamePrefix = 'mihcm-select', classNames, unstyled = true, ...rest } = props;
59
- const defaultClassNames = reactSelectClassNames;
60
- return {
61
- ...rest,
62
- className: cn('w-full min-w-0', className),
63
- classNamePrefix,
64
- classNames: {
65
- ...defaultClassNames,
66
- ...classNames,
67
- },
68
- unstyled,
69
- };
70
- }
71
- /* ── React Select powered exports ──────────────────────────────────── */
72
- export function ReactSelect(props) {
73
- return (_jsx(ReactSelectBase, { ...withReactSelectDefaults(props) }));
74
- }
75
- export function ReactAsyncSelect(props) {
76
- return (_jsx(ReactAsyncSelectBase, { ...withReactSelectDefaults(props) }));
77
- }
78
- export function ReactCreatableSelect(props) {
79
- return (_jsx(ReactCreatableSelectBase, { ...withReactSelectDefaults(props) }));
80
- }
81
- export function ReactAsyncCreatableSelect(props) {
82
- return (_jsx(ReactAsyncCreatableSelectBase, { ...withReactSelectDefaults(props) }));
83
- }
84
- const SelectContext = createContext(null);
85
- function useSelectContext() {
86
- const ctx = useContext(SelectContext);
87
- if (!ctx)
88
- throw new Error('Select sub-components must be used within <Select>.');
89
- return ctx;
90
- }
91
- function getTextLabel(children) {
92
- if (typeof children === 'string' || typeof children === 'number') {
93
- return String(children);
94
- }
95
- return undefined;
96
- }
97
- function findSelectItemLabel(children, value) {
98
- if (!value)
99
- return undefined;
100
- let match;
101
- Children.forEach(children, (child) => {
102
- if (match || !isValidElement(child))
103
- return;
104
- const props = child.props;
105
- if (props.value === value) {
106
- match = getTextLabel(props.children);
107
- return;
108
- }
109
- match = findSelectItemLabel(props.children, value);
110
- });
111
- return match;
112
- }
113
- export function Select({ value, onValueChange, open: controlledOpen, onOpenChange, disabled, children, }) {
114
- const [internalOpen, setInternalOpen] = useState(false);
115
- const open = controlledOpen ?? internalOpen;
116
- const setOpen = useCallback((next) => {
117
- if (disabled && next)
118
- return;
119
- onOpenChange?.(next);
120
- setInternalOpen(next);
121
- }, [disabled, onOpenChange]);
122
- const triggerRef = useRef(null);
123
- const setTriggerRef = useCallback((el) => {
124
- triggerRef.current = el;
125
- }, []);
126
- const [selectedLabel, setSelectedLabel] = useState();
127
- const handleValueChange = useCallback((v) => {
128
- onValueChange?.(v);
129
- setOpen(false);
130
- }, [onValueChange, setOpen]);
131
- const getLabelForValue = useCallback((nextValue) => findSelectItemLabel(children, nextValue), [children]);
132
- return (_jsx(SelectContext.Provider, { value: {
133
- value,
134
- onValueChange: handleValueChange,
135
- open,
136
- setOpen,
137
- disabled: !!disabled,
138
- triggerRef,
139
- setTriggerRef,
140
- selectedLabel,
141
- setSelectedLabel,
142
- getLabelForValue,
143
- }, children: _jsx("div", { className: "relative inline-block", children: children }) }));
144
- }
145
- /* ── Trigger ───────────────────────────────────────────────────────── */
146
- export const selectTriggerVariants = cva('inline-flex w-full items-center justify-between gap-2 rounded-lg border bg-card text-foreground shadow-mi-input ' +
147
- 'transition-colors duration-150 ' +
148
- 'focus-visible:outline-none focus-visible:border-primary ' +
149
- 'disabled:pointer-events-none disabled:opacity-50 ' +
150
- 'select-none whitespace-nowrap', {
151
- variants: {
152
- variant: {
153
- default: 'border-border',
154
- destructive: 'border-destructive text-destructive focus-visible:border-destructive',
155
- },
156
- size: {
157
- sm: 'h-9 px-3 text-body-sm',
158
- md: 'h-10 px-3.5 text-body-sm',
159
- lg: 'h-12 px-4 text-body-sm',
160
- },
161
- },
162
- defaultVariants: {
163
- variant: 'default',
164
- size: 'md',
165
- },
166
- });
167
- export const SelectTrigger = forwardRef(function SelectTrigger({ className, variant, size, placeholder, disabled, id, ...props }, ref) {
168
- const ctx = useSelectContext();
169
- const isDisabled = disabled ?? ctx.disabled;
170
- const listboxId = id ? `${id}-listbox` : undefined;
171
- const handleClick = useCallback(() => {
172
- ctx.setOpen(!ctx.open);
173
- }, [ctx]);
174
- const handleKeyDown = useCallback((e) => {
175
- if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {
176
- e.preventDefault();
177
- if (!ctx.open)
178
- ctx.setOpen(true);
179
- }
180
- }, [ctx]);
181
- // Merge refs
182
- const setRef = useCallback((el) => {
183
- ctx.setTriggerRef(el);
184
- if (typeof ref === 'function')
185
- ref(el);
186
- else if (ref)
187
- ref.current = el;
188
- }, [ctx, ref]);
189
- const selectedLabel = ctx.selectedLabel;
190
- const hasValue = ctx.value !== undefined && ctx.value !== '';
191
- const displayText = hasValue && selectedLabel && selectedLabel.value === ctx.value
192
- ? selectedLabel.label
193
- : hasValue
194
- ? ctx.getLabelForValue(ctx.value) ?? ctx.value
195
- : undefined;
196
- return (_jsxs("button", { ref: setRef, type: "button", id: id, role: "combobox", "aria-expanded": ctx.open, "aria-haspopup": "listbox", "aria-controls": ctx.open ? listboxId : undefined, disabled: isDisabled, onClick: handleClick, onKeyDown: handleKeyDown, className: cn(selectTriggerVariants({ variant, size }), className), ...props, children: [_jsx("span", { className: cn('truncate', !displayText && 'text-muted-foreground'), children: displayText ?? placeholder ?? 'Select…' }), _jsx("svg", { "aria-hidden": true, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 2, className: cn('h-4 w-4 shrink-0 opacity-50 transition-transform duration-200', ctx.open && 'rotate-180'), children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4 6l4 4 4-4" }) })] }));
197
- });
198
- export const SelectContent = forwardRef(function SelectContent({ className, children, ...props }, ref) {
199
- const ctx = useSelectContext();
200
- const contentRef = useRef(null);
201
- const focusedIndexRef = useRef(-1);
202
- // Close on click outside
203
- useEffect(() => {
204
- if (!ctx.open)
205
- return;
206
- function handleClickOutside(e) {
207
- const target = e.target;
208
- if (contentRef.current &&
209
- !contentRef.current.contains(target) &&
210
- ctx.triggerRef.current &&
211
- !ctx.triggerRef.current.contains(target)) {
212
- ctx.setOpen(false);
213
- }
214
- }
215
- document.addEventListener('mousedown', handleClickOutside);
216
- return () => document.removeEventListener('mousedown', handleClickOutside);
217
- }, [ctx]);
218
- // Keyboard navigation within the list
219
- useEffect(() => {
220
- if (!ctx.open)
221
- return;
222
- function handleKeyDown(e) {
223
- const options = contentRef.current?.querySelectorAll('[role="option"]');
224
- if (!options?.length)
225
- return;
226
- if (e.key === 'Escape') {
227
- e.preventDefault();
228
- ctx.setOpen(false);
229
- ctx.triggerRef.current?.focus();
230
- return;
231
- }
232
- if (e.key === 'ArrowDown') {
233
- e.preventDefault();
234
- focusedIndexRef.current = Math.min(focusedIndexRef.current + 1, options.length - 1);
235
- options[focusedIndexRef.current]?.focus();
236
- }
237
- else if (e.key === 'ArrowUp') {
238
- e.preventDefault();
239
- focusedIndexRef.current = Math.max(focusedIndexRef.current - 1, 0);
240
- options[focusedIndexRef.current]?.focus();
241
- }
242
- }
243
- document.addEventListener('keydown', handleKeyDown);
244
- return () => document.removeEventListener('keydown', handleKeyDown);
245
- }, [ctx]);
246
- // Focus first option (or selected) on open
247
- useEffect(() => {
248
- if (!ctx.open || !contentRef.current)
249
- return;
250
- focusedIndexRef.current = -1;
251
- const selected = contentRef.current.querySelector('[aria-selected="true"]');
252
- if (selected) {
253
- selected.focus();
254
- }
255
- else {
256
- const first = contentRef.current.querySelector('[role="option"]');
257
- first?.focus();
258
- }
259
- }, [ctx.open]);
260
- // Merge refs
261
- const setRef = useCallback((el) => {
262
- contentRef.current = el;
263
- if (typeof ref === 'function')
264
- ref(el);
265
- else if (ref)
266
- ref.current = el;
267
- }, [ref]);
268
- if (!ctx.open)
269
- return null;
270
- return (_jsx("div", { ref: setRef, id: ctx.triggerRef.current?.id ? `${ctx.triggerRef.current.id}-listbox` : undefined, role: "listbox", "aria-labelledby": ctx.triggerRef.current?.id || undefined, className: cn('absolute left-0 top-full z-50 mt-1 w-full min-w-[8rem] overflow-hidden rounded-lg', 'border border-border bg-card text-card-foreground shadow-mi-input', 'animate-dropdown-in', className), ...props, children: _jsx("div", { className: "max-h-60 overflow-y-auto p-1", children: children }) }));
271
- });
272
- export const SelectItem = forwardRef(function SelectItem({ className, value, disabled, children, ...props }, ref) {
273
- const ctx = useSelectContext();
274
- const { onValueChange, selectedLabel, setSelectedLabel, triggerRef } = ctx;
275
- const isSelected = ctx.value === value;
276
- // Register label of selected item
277
- useEffect(() => {
278
- if (isSelected &&
279
- typeof children === 'string' &&
280
- (selectedLabel?.value !== value || selectedLabel.label !== children)) {
281
- setSelectedLabel({ value, label: children });
282
- }
283
- }, [isSelected, children, selectedLabel?.label, selectedLabel?.value, setSelectedLabel, value]);
284
- const handleSelect = useCallback(() => {
285
- if (disabled)
286
- return;
287
- if (typeof children === 'string') {
288
- setSelectedLabel({ value, label: children });
289
- }
290
- onValueChange(value);
291
- triggerRef.current?.focus();
292
- }, [children, disabled, onValueChange, setSelectedLabel, triggerRef, value]);
293
- const handleKeyDown = useCallback((e) => {
294
- if (e.key === 'Enter' || e.key === ' ') {
295
- e.preventDefault();
296
- handleSelect();
297
- }
298
- }, [handleSelect]);
299
- return (_jsxs("div", { ref: ref, role: "option", "aria-selected": isSelected, "aria-disabled": disabled || undefined, tabIndex: disabled ? undefined : -1, onClick: handleSelect, onKeyDown: handleKeyDown, className: cn('relative flex cursor-pointer items-center rounded-md px-2 py-1.5 text-body-sm outline-none', 'transition-colors duration-150', 'hover:bg-muted focus:bg-muted', isSelected && 'font-medium', disabled && 'pointer-events-none opacity-50', className), ...props, children: [_jsx("span", { className: "mr-2 inline-flex h-4 w-4 shrink-0 items-center justify-center", children: isSelected && (_jsx("svg", { "aria-hidden": true, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 2, className: "h-4 w-4", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3 8l3 3 7-7" }) })) }), _jsx("span", { className: "truncate", children: children })] }));
300
- });
301
- export const SelectGroup = forwardRef(function SelectGroup({ className, ...props }, ref) {
302
- return _jsx("div", { ref: ref, role: "group", className: cn('py-1', className), ...props });
303
- });
304
- export const SelectLabel = forwardRef(function SelectLabel({ className, ...props }, ref) {
305
- return (_jsx("div", { ref: ref, className: cn('px-2 py-1.5 text-xs font-semibold text-muted-foreground', className), ...props }));
306
- });
307
- export const SelectSeparator = forwardRef(function SelectSeparator({ className, ...props }, ref) {
308
- return (_jsx("hr", { ref: ref, className: cn('-mx-1 my-1 border-t border-border', className), ...props }));
309
- });
25
+ export { getReactSelectAnimatedComponents, reactSelectAnimatedComponents, ReactAsyncCreatableSelect, ReactAsyncSelect, ReactCreatableSelect, ReactSelect, } from './Select/react-select.js';
26
+ export { Select } from './Select/root.js';
27
+ export { SelectTrigger, selectTriggerVariants } from './Select/trigger.js';
28
+ export { SelectContent } from './Select/content.js';
29
+ export { SelectItem } from './Select/item.js';
30
+ export { SelectGroup, SelectLabel, SelectSeparator, } from './Select/parts.js';
310
31
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sourceRoot":"","sources":["../src/Select.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sourceRoot":"","sources":["../src/Select.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,yBAAyB,EACzB,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,GAMZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,MAAM,EAAoB,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAA2B,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,WAAW,EACX,WAAW,EACX,eAAe,GAIhB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type SidebarSide = 'left' | 'right';
2
+ export type SidebarVariant = 'sidebar' | 'floating' | 'inset';
3
+ export type SidebarCollapsible = 'offcanvas' | 'icon' | 'none';
4
+ export type SidebarPosition = 'contained' | 'fixed';
5
+ export declare const SIDEBAR_COOKIE_NAME = "sidebar_state";
6
+ export declare const SIDEBAR_COOKIE_MAX_AGE: number;
7
+ export declare const SIDEBAR_WIDTH = "16rem";
8
+ export declare const SIDEBAR_WIDTH_ICON = "3rem";
9
+ export declare const SIDEBAR_WIDTH_MOBILE = "18rem";
10
+ export declare const SIDEBAR_KEYBOARD_SHORTCUT = "b";
11
+ export declare const SIDEBAR_MOBILE_BREAKPOINT = 768;
12
+ export declare function useIsMobile(breakpoint: number): boolean;
13
+ export interface SidebarContextValue {
14
+ state: 'expanded' | 'collapsed';
15
+ open: boolean;
16
+ setOpen: (open: boolean | ((prev: boolean) => boolean)) => void;
17
+ openMobile: boolean;
18
+ setOpenMobile: (open: boolean | ((prev: boolean) => boolean)) => void;
19
+ isMobile: boolean;
20
+ side: SidebarSide;
21
+ variant: SidebarVariant;
22
+ collapsible: SidebarCollapsible;
23
+ position: SidebarPosition;
24
+ toggleSidebar: () => void;
25
+ }
26
+ export declare const SidebarContext: import("react").Context<SidebarContextValue | null>;
27
+ export declare function useSidebar(): SidebarContextValue;
28
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/Sidebar/context.tsx"],"names":[],"mappings":"AAYA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC;AAIpD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AACvD,eAAO,MAAM,aAAa,UAAU,CAAC;AACrC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAI7C,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,WAgB7C;AAID,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC;IACtE,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,qDAAkD,CAAC;AAE9E,wBAAgB,UAAU,wBAMzB"}
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+ /**
3
+ * Sidebar context, shared types, constants, and the `useSidebar` hook.
4
+ */
5
+ import { createContext, useContext, useEffect, useState, } from 'react';
6
+ /* ── Constants ─────────────────────────────────────────────────────── */
7
+ export const SIDEBAR_COOKIE_NAME = 'sidebar_state';
8
+ export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; // 7 days
9
+ export const SIDEBAR_WIDTH = '16rem';
10
+ export const SIDEBAR_WIDTH_ICON = '3rem';
11
+ export const SIDEBAR_WIDTH_MOBILE = '18rem';
12
+ export const SIDEBAR_KEYBOARD_SHORTCUT = 'b';
13
+ export const SIDEBAR_MOBILE_BREAKPOINT = 768;
14
+ /* ── useIsMobile ───────────────────────────────────────────────────── */
15
+ export function useIsMobile(breakpoint) {
16
+ const [isMobile, setIsMobile] = useState(false);
17
+ useEffect(() => {
18
+ if (typeof window.matchMedia !== 'function') {
19
+ return;
20
+ }
21
+ const mql = window.matchMedia(`(max-width: ${breakpoint}px)`);
22
+ const onChange = () => setIsMobile(mql.matches);
23
+ onChange();
24
+ mql.addEventListener('change', onChange);
25
+ return () => mql.removeEventListener('change', onChange);
26
+ }, [breakpoint]);
27
+ return isMobile;
28
+ }
29
+ export const SidebarContext = createContext(null);
30
+ export function useSidebar() {
31
+ const ctx = useContext(SidebarContext);
32
+ if (!ctx) {
33
+ throw new Error('useSidebar must be used within a <SidebarProvider>.');
34
+ }
35
+ return ctx;
36
+ }
37
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/Sidebar/context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;GAEG;AACH,OAAO,EACL,aAAa,EACb,UAAU,EACV,SAAS,EACT,QAAQ,GACT,MAAM,OAAO,CAAC;AAOf,0EAA0E;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS;AACjE,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,0EAA0E;AAE1E,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,UAAU,KAAK,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,QAAQ,EAAE,CAAC;QACX,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAkBD,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAA6B,IAAI,CAAC,CAAC;AAE9E,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Group sections: SidebarGroup, SidebarGroupLabel, SidebarGroupAction, SidebarGroupContent.
3
+ */
4
+ import { type ButtonHTMLAttributes, type HTMLAttributes } from 'react';
5
+ export declare const SidebarGroup: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
6
+ export declare const SidebarGroupLabel: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
7
+ asChild?: boolean;
8
+ } & import("react").RefAttributes<HTMLDivElement>>;
9
+ export declare const SidebarGroupAction: import("react").ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
10
+ asChild?: boolean;
11
+ } & import("react").RefAttributes<HTMLButtonElement>>;
12
+ export declare const SidebarGroupContent: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
13
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/Sidebar/group.tsx"],"names":[],"mappings":"AAEA;;GAEG;AACH,OAAO,EAAc,KAAK,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAGnF,eAAO,MAAM,YAAY,2HAWxB,CAAC;AAEF,eAAO,MAAM,iBAAiB;cAA2E,OAAO;kDAe/G,CAAC;AAEF,eAAO,MAAM,kBAAkB;cAAuF,OAAO;qDAiB5H,CAAC;AAEF,eAAO,MAAM,mBAAmB,2HAW/B,CAAC"}
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * Group sections: SidebarGroup, SidebarGroupLabel, SidebarGroupAction, SidebarGroupContent.
5
+ */
6
+ import { forwardRef } from 'react';
7
+ import { cn } from '../internal/cn.js';
8
+ export const SidebarGroup = forwardRef(function SidebarGroup({ className, ...props }, ref) {
9
+ return (_jsx("div", { ref: ref, "data-sidebar": "group", className: cn('relative flex w-full min-w-0 flex-col p-2', className), ...props }));
10
+ });
11
+ export const SidebarGroupLabel = forwardRef(function SidebarGroupLabel({ className, asChild: _asChild, ...props }, ref) {
12
+ return (_jsx("div", { ref: ref, "data-sidebar": "group-label", className: cn('flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2', 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0', className), ...props }));
13
+ });
14
+ export const SidebarGroupAction = forwardRef(function SidebarGroupAction({ className, asChild: _asChild, ...props }, ref) {
15
+ return (_jsx("button", { ref: ref, type: "button", "data-sidebar": "group-action", className: cn('absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0', 'after:absolute after:-inset-2 after:md:hidden', 'group-data-[collapsible=icon]:hidden', className), ...props }));
16
+ });
17
+ export const SidebarGroupContent = forwardRef(function SidebarGroupContent({ className, ...props }, ref) {
18
+ return (_jsx("div", { ref: ref, "data-sidebar": "group-content", className: cn('w-full text-sm', className), ...props }));
19
+ });
20
+ //# sourceMappingURL=group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/Sidebar/group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;GAEG;AACH,OAAO,EAAE,UAAU,EAAkD,MAAM,OAAO,CAAC;AACnF,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAChD,OAAO,CACL,cACE,GAAG,EAAE,GAAG,kBACK,OAAO,EACpB,SAAS,EAAE,EAAE,CAAC,2CAA2C,EAAE,SAAS,CAAC,KACjE,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CACzC,SAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IACxE,OAAO,CACL,cACE,GAAG,EAAE,GAAG,kBACK,aAAa,EAC1B,SAAS,EAAE,EAAE,CACX,wMAAwM,EACxM,6EAA6E,EAC7E,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,SAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IACzE,OAAO,CACL,iBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,kBACA,cAAc,EAC3B,SAAS,EAAE,EAAE,CACX,0RAA0R,EAC1R,+CAA+C,EAC/C,sCAAsC,EACtC,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAC3C,SAAS,mBAAmB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IACvD,OAAO,CACL,cACE,GAAG,EAAE,GAAG,kBACK,eAAe,EAC5B,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,KACtC,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Inline trigger icons for the Sidebar. Kept local so the `@mihcm/ui`
3
+ * package doesn't pull in lucide-react just for two glyphs.
4
+ */
5
+ export declare function PanelLeftIcon(): import("react/jsx-runtime").JSX.Element;
6
+ export declare function PanelRightIcon(): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/Sidebar/icons.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,aAAa,4CAiB5B;AAED,wBAAgB,cAAc,4CAiB7B"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Inline trigger icons for the Sidebar. Kept local so the `@mihcm/ui`
4
+ * package doesn't pull in lucide-react just for two glyphs.
5
+ */
6
+ export function PanelLeftIcon() {
7
+ return (_jsxs("svg", { "aria-hidden": "true", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: "h-4 w-4", children: [_jsx("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }), _jsx("path", { d: "M9 3v18" })] }));
8
+ }
9
+ export function PanelRightIcon() {
10
+ return (_jsxs("svg", { "aria-hidden": "true", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: "h-4 w-4", children: [_jsx("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }), _jsx("path", { d: "M15 3v18" })] }));
11
+ }
12
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/Sidebar/icons.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,MAAM,UAAU,aAAa;IAC3B,OAAO,CACL,8BACc,MAAM,EAClB,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,SAAS,aAEnB,eAAM,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,GAAG,EAClD,eAAM,CAAC,EAAC,SAAS,GAAG,IAChB,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CACL,8BACc,MAAM,EAClB,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,SAAS,aAEnB,eAAM,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,GAAG,EAClD,eAAM,CAAC,EAAC,UAAU,GAAG,IACjB,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Layout sections: SidebarHeader, SidebarFooter, SidebarContent, SidebarSeparator.
3
+ */
4
+ import { type HTMLAttributes } from 'react';
5
+ export declare const SidebarHeader: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
6
+ export declare const SidebarFooter: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
7
+ export declare const SidebarContent: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
8
+ export declare const SidebarSeparator: import("react").ForwardRefExoticComponent<Omit<import("../Separator.js").SeparatorProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
9
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/Sidebar/layout.tsx"],"names":[],"mappings":"AAEA;;GAEG;AACH,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAI7E,eAAO,MAAM,aAAa,2HAWzB,CAAC;AAEF,eAAO,MAAM,aAAa,2HAWzB,CAAC;AAEF,eAAO,MAAM,cAAc,2HAc1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,kMAY3B,CAAC"}
@@ -0,0 +1,21 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * Layout sections: SidebarHeader, SidebarFooter, SidebarContent, SidebarSeparator.
5
+ */
6
+ import { forwardRef } from 'react';
7
+ import { cn } from '../internal/cn.js';
8
+ import { Separator } from '../Separator.js';
9
+ export const SidebarHeader = forwardRef(function SidebarHeader({ className, ...props }, ref) {
10
+ return (_jsx("div", { ref: ref, "data-sidebar": "header", className: cn('flex flex-col gap-2 p-2', className), ...props }));
11
+ });
12
+ export const SidebarFooter = forwardRef(function SidebarFooter({ className, ...props }, ref) {
13
+ return (_jsx("div", { ref: ref, "data-sidebar": "footer", className: cn('flex flex-col gap-2 p-2', className), ...props }));
14
+ });
15
+ export const SidebarContent = forwardRef(function SidebarContent({ className, ...props }, ref) {
16
+ return (_jsx("div", { ref: ref, "data-sidebar": "content", className: cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className), ...props }));
17
+ });
18
+ export const SidebarSeparator = forwardRef(function SidebarSeparator({ className, ...props }, ref) {
19
+ return (_jsx(Separator, { ref: ref, "data-sidebar": "separator", className: cn('mx-2 w-auto bg-sidebar-border', className), ...props }));
20
+ });
21
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/Sidebar/layout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;GAEG;AACH,OAAO,EAAE,UAAU,EAA4C,MAAM,OAAO,CAAC;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,SAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IACjD,OAAO,CACL,cACE,GAAG,EAAE,GAAG,kBACK,QAAQ,EACrB,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,KAC/C,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,SAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IACjD,OAAO,CACL,cACE,GAAG,EAAE,GAAG,kBACK,QAAQ,EACrB,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,KAC/C,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAClD,OAAO,CACL,cACE,GAAG,EAAE,GAAG,kBACK,SAAS,EACtB,SAAS,EAAE,EAAE,CACX,gGAAgG,EAChG,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAGxC,SAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IACtD,OAAO,CACL,KAAC,SAAS,IACR,GAAG,EAAE,GAAG,kBACK,WAAW,EACxB,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,KACrD,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Menu list and item: SidebarMenu, SidebarMenuItem, SidebarMenuButton (+ CVA),
3
+ * SidebarMenuAction, SidebarMenuBadge, SidebarMenuSkeleton.
4
+ */
5
+ import { type ButtonHTMLAttributes, type ComponentProps, type HTMLAttributes } from 'react';
6
+ import { type VariantProps } from 'class-variance-authority';
7
+ import { Tooltip } from '../Tooltip.js';
8
+ export declare const SidebarMenu: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & import("react").RefAttributes<HTMLUListElement>>;
9
+ export declare const SidebarMenuItem: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLLIElement> & import("react").RefAttributes<HTMLLIElement>>;
10
+ export declare const sidebarMenuButtonVariants: (props?: ({
11
+ variant?: "default" | "outline" | null | undefined;
12
+ size?: "default" | "sm" | "lg" | null | undefined;
13
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
+ export interface SidebarMenuButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof sidebarMenuButtonVariants> {
15
+ asChild?: boolean;
16
+ isActive?: boolean;
17
+ tooltip?: string | ComponentProps<typeof Tooltip>;
18
+ }
19
+ export declare const SidebarMenuButton: import("react").ForwardRefExoticComponent<SidebarMenuButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
20
+ export declare const SidebarMenuAction: import("react").ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
21
+ asChild?: boolean;
22
+ showOnHover?: boolean;
23
+ } & import("react").RefAttributes<HTMLButtonElement>>;
24
+ export declare const SidebarMenuBadge: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
25
+ export interface SidebarMenuSkeletonProps extends HTMLAttributes<HTMLDivElement> {
26
+ showIcon?: boolean;
27
+ }
28
+ export declare const SidebarMenuSkeleton: import("react").ForwardRefExoticComponent<SidebarMenuSkeletonProps & import("react").RefAttributes<HTMLDivElement>>;
29
+ //# sourceMappingURL=menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/Sidebar/menu.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,eAAO,MAAM,WAAW,+HAWvB,CAAC;AAEF,eAAO,MAAM,eAAe,yHAW3B,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;8EAoBrC,CAAC;AAEF,MAAM,WAAW,sBACf,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,YAAY,CAAC,OAAO,yBAAyB,CAAC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC;CACnD;AAED,eAAO,MAAM,iBAAiB,sHA8B7B,CAAC;AAEF,eAAO,MAAM,iBAAiB;cAE0B,OAAO;kBAAgB,OAAO;qDAkBpF,CAAC;AAEH,eAAO,MAAM,gBAAgB,2HAgB5B,CAAC;AAEF,MAAM,WAAW,wBAAyB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,mBAAmB,qHAoB/B,CAAC"}