@hilum/ui 3.4.0 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +4 -0
  2. package/dist/{chunk-MAHPAP65.js → chunk-RI6QJR2L.js} +6 -3
  3. package/dist/chunk-RI6QJR2L.js.map +1 -0
  4. package/dist/index.d.ts +789 -115
  5. package/dist/index.js +10404 -1099
  6. package/dist/index.js.map +1 -1
  7. package/dist/tokens.css +17 -0
  8. package/dist/tokens.d.ts +3 -0
  9. package/dist/tokens.js +1 -1
  10. package/llms.txt +18 -4
  11. package/package.json +19 -1
  12. package/src/components/accordion.tsx +746 -58
  13. package/src/components/alert-dialog.tsx +11 -5
  14. package/src/components/ask-user-questions.tsx +1366 -0
  15. package/src/components/badge.tsx +105 -24
  16. package/src/components/button.tsx +207 -38
  17. package/src/components/card.tsx +3 -2
  18. package/src/components/chat-message.tsx +116 -0
  19. package/src/components/checkbox-group.tsx +403 -0
  20. package/src/components/checkbox.tsx +6 -3
  21. package/src/components/color-input.tsx +3 -1
  22. package/src/components/color-picker.tsx +1992 -80
  23. package/src/components/dialog.tsx +141 -81
  24. package/src/components/dropdown-menu.tsx +21 -13
  25. package/src/components/dropdown.tsx +245 -0
  26. package/src/components/file-thumbnail.tsx +156 -0
  27. package/src/components/hover-card.tsx +2 -0
  28. package/src/components/input-copy.tsx +307 -0
  29. package/src/components/input-group.tsx +303 -108
  30. package/src/components/input-message.tsx +883 -0
  31. package/src/components/input.tsx +6 -3
  32. package/src/components/menu-item.tsx +156 -0
  33. package/src/components/mobile-drawer.tsx +50 -0
  34. package/src/components/nav-item.tsx +43 -0
  35. package/src/components/nav-menu.tsx +47 -0
  36. package/src/components/popover.tsx +3 -1
  37. package/src/components/radio-group.tsx +381 -35
  38. package/src/components/scroll-area.tsx +9 -2
  39. package/src/components/select.tsx +708 -121
  40. package/src/components/sheet.tsx +15 -6
  41. package/src/components/slider.tsx +1583 -20
  42. package/src/components/status-badge.tsx +2 -0
  43. package/src/components/switch.tsx +245 -28
  44. package/src/components/table.tsx +191 -77
  45. package/src/components/tabs-subtle.tsx +411 -0
  46. package/src/components/tabs.tsx +459 -49
  47. package/src/components/textarea.tsx +7 -3
  48. package/src/components/thinking-indicator.tsx +106 -0
  49. package/src/components/thinking-steps.tsx +382 -0
  50. package/src/components/tooltip.tsx +158 -33
  51. package/src/hooks/use-merge-split.tsx +359 -0
  52. package/src/hooks/use-proximity-hover.ts +208 -0
  53. package/src/index.ts +14 -0
  54. package/src/lib/elevated.tsx +52 -0
  55. package/src/lib/font-weight.ts +18 -0
  56. package/src/lib/icon-context.tsx +98 -0
  57. package/src/lib/icon-map.tsx +669 -0
  58. package/src/lib/interaction.ts +102 -0
  59. package/src/lib/scroll-fade.tsx +241 -0
  60. package/src/lib/shape-context.tsx +121 -0
  61. package/src/lib/springs.ts +30 -0
  62. package/src/lib/surface-classes.ts +43 -0
  63. package/src/lib/surface-context.tsx +17 -0
  64. package/src/tokens/tokens.ts +3 -0
  65. package/dist/chunk-MAHPAP65.js.map +0 -1
package/dist/tokens.css CHANGED
@@ -57,6 +57,9 @@
57
57
  --animate-accordion-down: accordion-down 0.2s ease-out;
58
58
  --animate-accordion-up: accordion-up 0.2s ease-out;
59
59
  --animate-caret-blink: caret-blink 1.25s ease-out infinite;
60
+ --animate-hilum-orbit: hilum-orbit 1.4s ease-in-out infinite;
61
+ --animate-hilum-spring-in: hilum-spring-in 180ms cubic-bezier(0.2, 0.9, 0.2, 1.15);
62
+ --animate-hilum-thinking: hilum-thinking 1.1s ease-in-out infinite;
60
63
 
61
64
  --z-dropdown: 40;
62
65
  --z-sticky: 50;
@@ -336,6 +339,20 @@
336
339
  0%, 70%, 100% { opacity: 1; }
337
340
  20%, 50% { opacity: 0; }
338
341
  }
342
+ @keyframes hilum-orbit {
343
+ 0% { stroke-dasharray: 10 90; stroke-dashoffset: 0; }
344
+ 50% { stroke-dasharray: 28 72; stroke-dashoffset: -18; }
345
+ 100% { stroke-dasharray: 10 90; stroke-dashoffset: -100; }
346
+ }
347
+ @keyframes hilum-spring-in {
348
+ 0% { opacity: 0; transform: scale(0.92); }
349
+ 70% { opacity: 1; transform: scale(1.04); }
350
+ 100% { opacity: 1; transform: scale(1); }
351
+ }
352
+ @keyframes hilum-thinking {
353
+ 0%, 100% { opacity: 0.42; transform: translateY(0) scale(0.92); }
354
+ 50% { opacity: 1; transform: translateY(-1px) scale(1); }
355
+ }
339
356
 
340
357
  *,
341
358
  ::before,
package/dist/tokens.d.ts CHANGED
@@ -261,6 +261,9 @@ declare const tokens: {
261
261
  readonly "accordion-down": "accordion-down 0.2s ease-out";
262
262
  readonly "accordion-up": "accordion-up 0.2s ease-out";
263
263
  readonly "caret-blink": "caret-blink 1.25s ease-out infinite";
264
+ readonly "hilum-orbit": "hilum-orbit 1.4s ease-in-out infinite";
265
+ readonly "hilum-spring-in": "hilum-spring-in 180ms cubic-bezier(0.2, 0.9, 0.2, 1.15)";
266
+ readonly "hilum-thinking": "hilum-thinking 1.1s ease-in-out infinite";
264
267
  };
265
268
  };
266
269
  type Tokens = typeof tokens;
package/dist/tokens.js CHANGED
@@ -1,3 +1,3 @@
1
- export { tokens } from './chunk-MAHPAP65.js';
1
+ export { tokens } from './chunk-RI6QJR2L.js';
2
2
  //# sourceMappingURL=tokens.js.map
3
3
  //# sourceMappingURL=tokens.js.map
package/llms.txt CHANGED
@@ -5,10 +5,10 @@
5
5
  ## Key Facts
6
6
 
7
7
  - Package name: `@hilum/ui`
8
- - Package version: 3.3.4
9
- - Component modules: 85
10
- - Atom components: 63
11
- - Molecule components: 22
8
+ - Package version: 3.4.0
9
+ - Component modules: 99
10
+ - Atom components: 70
11
+ - Molecule components: 29
12
12
  - Docs site: https://ui.hilum.dev
13
13
  - GitHub repository: https://github.com/hilum-labs/hilum-ui
14
14
  - Machine-readable docs index: https://ui.hilum.dev/catalog.json
@@ -75,6 +75,7 @@ Primary exports:
75
75
  - Alert Dialog (/atoms/alert-dialog/) — Confirmation modal that requires explicit action before proceeding.
76
76
  - Alert (/atoms/alert/) — Inline message communicating status or feedback.
77
77
  - Aspect Ratio (/atoms/aspect-ratio/) — Constrains content to a specific width-to-height ratio.
78
+ - Ask User Questions (/molecules/ask-user-questions/) — Question prompt panel for collecting answers, clarifications, and review decisions. Composes: Card · Button.
78
79
  - Avatar Stack (/atoms/avatar-stack/) — Overlapping group of avatars with optional overflow badge.
79
80
  - Avatar (/atoms/avatar/) — User representations with image, fallback, and optional status indicator.
80
81
  - Badge (/atoms/badge/) — Compact labels for status, categories, and metadata.
@@ -87,7 +88,9 @@ Primary exports:
87
88
  - Card (/atoms/card/) — Contained surface for grouping related content, media, stats, and article layouts.
88
89
  - Carousel (/atoms/carousel/) — Horizontally scrollable item sequence with previous and next controls.
89
90
  - Chart (/atoms/chart/) — Recharts-based data visualization with design-system styling.
91
+ - Chat Message (/molecules/chat-message/) — Chat transcript row with avatar, author metadata, alignment, and message bubble tone. Composes: Avatar.
90
92
  - Checkbox (/atoms/checkbox/) — Binary selection control with checked, unchecked, and indeterminate states.
93
+ - Checkbox Group (/atoms/checkbox-group/) — Grouped multi-select options with contiguous product-style row highlighting.
91
94
  - Collapsible (/atoms/collapsible/) — Toggleable content region, often used for navigation groups.
92
95
  - Color Input (/atoms/color-input/) — Compact color input combining swatch, hex field, and optional opacity control.
93
96
  - Color Picker (/atoms/color-picker/) — Popover color selector with native color wheel, hex input, and preset palette.
@@ -101,14 +104,18 @@ Primary exports:
101
104
  - Description List (/molecules/description-list/) — Key-value pairs for structured details in profiles and settings panels. Composes: Badge · Button.
102
105
  - Dialog (/atoms/dialog/) — Modal overlay for focused tasks and confirmations.
103
106
  - Drawer (/atoms/drawer/) — Bottom sheet that slides up from the edge, optimized for mobile.
107
+ - Dropdown (/atoms/dropdown/) — Fluid-style menu surface with proximity hover, selected state, and elevated surface treatment.
104
108
  - Dropdown Menu (/atoms/dropdown-menu/) — Contextual action menu revealed from a trigger.
105
109
  - Empty State (/molecules/empty-state/) — Placeholder for empty lists, zero-data views, and no-results scenarios. Composes: Button · Icon.
106
110
  - Field (/molecules/field/) — Labeled form control composition with hint and error text. Composes: Label · Input · Textarea.
111
+ - File Thumbnail (/atoms/file-thumbnail/) — Compact file preview row with icon, optional image preview, type, and size metadata.
107
112
  - File Dropzone (/atoms/file-dropzone/) — Accessible drag-and-drop file input with loading and selected-file states.
108
113
  - Grid List (/molecules/grid-list/) — Responsive grid of cards for simple content, accents, and contact layouts. Composes: Card · Badge · Avatar.
109
114
  - Help Tooltip (/atoms/help-tooltip/) — Inline help trigger with tooltip content and optional learn-more link.
110
115
  - Hover Card (/atoms/hover-card/) — Rich preview card that appears on hover over a link or element.
116
+ - Input Copy (/molecules/input-copy/) — Read-only value field with an integrated clipboard action and copied feedback state. Composes: Input · Button.
111
117
  - Input Group (/molecules/input-group/) — Input with leading or trailing text addons, icons, and inset actions. Composes: Input.
118
+ - Input Message (/molecules/input-message/) — Auto-growing chat-style message composer with action slots and send affordance. Composes: Button · Textarea.
112
119
  - Input Number (/atoms/input-number/) — Numeric input with steppers, unit suffix, and arrow-key stepping.
113
120
  - Input OTP (/atoms/input-otp/) — One-time password input with individual character slots.
114
121
  - Input (/atoms/input/) — Single-line text field for user input.
@@ -116,8 +123,12 @@ Primary exports:
116
123
  - Label (/atoms/label/) — Accessible form label that associates text with its control.
117
124
  - Media Asset Card (/molecules/media-asset-card/) — Selectable media or file card with grid, list, and responsive orientations. Composes: Card · Icon · Image.
118
125
  - Media Object (/molecules/media-object/) — Layout primitive pairing fixed media with flexible text content. Composes: Avatar · Icon.
126
+ - Menu Item (/atoms/menu-item/) — Reusable command row for menus, lists, and product navigation surfaces.
119
127
  - Menubar (/atoms/menubar/) — Horizontal application menu bar with nested dropdown panels.
128
+ - Mobile Drawer (/molecules/mobile-drawer/) — Mobile navigation drawer wrapper with trigger, sheet content, title, and description. Composes: Button · Sheet.
120
129
  - Native Select (/atoms/native-select/) — Styled native HTML select with no JavaScript dropdown overhead.
130
+ - Nav Item (/atoms/nav-item/) — Single navigation row with icon, active state, trailing content, and product motion.
131
+ - Nav Menu (/molecules/nav-menu/) — Vertical navigation list with proximity-aware row activation and active item state. Composes: Nav Item.
121
132
  - Navigation Menu (/atoms/navigation-menu/) — Top-level navigation with accessible animated dropdown panels.
122
133
  - Notification (/molecules/notification/) — Toast-style notification panel with success, error, warning, and info variants. Composes: Icon · Button.
123
134
  - Page Heading (/molecules/page-heading/) — Full page header with breadcrumb navigation, title, metadata, and actions. Composes: Button · Badge · Breadcrumb.
@@ -147,7 +158,10 @@ Primary exports:
147
158
  - Switch (/atoms/switch/) — Toggle between two states, on and off.
148
159
  - Table (/atoms/table/) — Structured data display with rows and columns.
149
160
  - Tabs (/atoms/tabs/) — Organizes content into switchable panels.
161
+ - Tabs Subtle (/atoms/tabs-subtle/) — Quiet segmented tab navigation for settings, filters, and compact product panels.
150
162
  - Textarea (/atoms/textarea/) — Multi-line text field for longer user input.
163
+ - Thinking Indicator (/atoms/thinking-indicator/) — Compact animated status indicator for pending assistant or system work.
164
+ - Thinking Steps (/molecules/thinking-steps/) — Reasoning progress list with complete, current, and pending step states. Composes: Thinking Indicator.
151
165
  - Titled Card (/molecules/titled-card/) — Responsive card wrapper with title, subtitle, actions, and mobile-flattened layout. Composes: Card · Card Heading.
152
166
  - Toggle Group (/atoms/toggle-group/) — Set of toggles with single or multiple selection.
153
167
  - Toggle (/atoms/toggle/) — Two-state press button for toolbars and filter controls.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hilum/ui",
3
- "version": "3.4.0",
3
+ "version": "3.5.1",
4
4
  "private": false,
5
5
  "description": "Hilum UI — design system primitives (Button, Input, Dialog, Combobox, …) + tokens + fonts + icons",
6
6
  "license": "MIT",
@@ -43,6 +43,9 @@
43
43
  "src/icons.ts",
44
44
  "src/index.ts",
45
45
  "src/lib/*.ts",
46
+ "src/lib/*.tsx",
47
+ "src/hooks/*.ts",
48
+ "src/hooks/*.tsx",
46
49
  "src/tokens/*.ts",
47
50
  "README.md",
48
51
  "LICENSE",
@@ -54,13 +57,28 @@
54
57
  "react-dom": "^19.0.0"
55
58
  },
56
59
  "dependencies": {
60
+ "@hugeicons/core-free-icons": "^4.2.2",
61
+ "@hugeicons/react": "^1.1.9",
62
+ "@phosphor-icons/react": "^2.1.10",
63
+ "@radix-ui/react-accordion": "^1.2.14",
64
+ "@radix-ui/react-checkbox": "^1.3.5",
57
65
  "@radix-ui/react-context": "^1.1.2",
58
66
  "@radix-ui/react-dialog": "^1.1.15",
67
+ "@radix-ui/react-radio-group": "^1.4.1",
68
+ "@radix-ui/react-slider": "^1.4.1",
69
+ "@radix-ui/react-slot": "^1.3.0",
70
+ "@radix-ui/react-switch": "^1.3.1",
71
+ "@radix-ui/react-tabs": "^1.1.15",
72
+ "@radix-ui/react-tooltip": "^1.2.10",
73
+ "@tabler/icons-react": "^3.44.0",
59
74
  "@tanstack/react-table": "^8.21.3",
75
+ "@untitledui/icons": "^0.0.22",
60
76
  "class-variance-authority": "^0.7.1",
61
77
  "clsx": "^2.1.1",
62
78
  "embla-carousel-react": "^8.6.0",
79
+ "framer-motion": "^12.42.0",
63
80
  "input-otp": "^1.4.2",
81
+ "pdfjs-dist": "^6.1.200",
64
82
  "radix-ui": "^1.1.3",
65
83
  "react-day-picker": "^9.14.0",
66
84
  "react-resizable-panels": "^4.10.0",