@nordmanai/nif 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.js +31332 -11730
- package/dist/styles.css +1 -1
- package/dist/ui/components/nm-ai/nm-ai.d.ts +4 -0
- package/dist/ui/components/nm-alert/nm-alert.d.ts +13 -0
- package/dist/ui/components/nm-button/nm-button.d.ts +7 -3
- package/dist/ui/components/nm-checkbox/nm-checkbox.d.ts +1 -1
- package/dist/ui/components/nm-chip/nm-chip.d.ts +5 -2
- package/dist/ui/components/nm-collapsible/nm-collapsible.d.ts +6 -0
- package/dist/ui/components/nm-combobox/nm-combobox.d.ts +1 -1
- package/dist/ui/components/nm-command/nm-command.d.ts +8 -1
- package/dist/ui/components/nm-composer/nm-composer.d.ts +47 -4
- package/dist/ui/components/nm-context-menu/nm-context-menu.d.ts +1 -1
- package/dist/ui/components/nm-dialog/nm-dialog.d.ts +1 -1
- package/dist/ui/components/nm-dropdown/nm-dropdown.d.ts +1 -1
- package/dist/ui/components/nm-dropdown-menu/nm-dropdown-menu.d.ts +11 -2
- package/dist/ui/components/nm-hover-card/nm-hover-card.d.ts +1 -1
- package/dist/ui/components/nm-icon/animated/activity.d.ts +72 -0
- package/dist/ui/components/nm-icon/animated/archive.d.ts +31 -0
- package/dist/ui/components/nm-icon/animated/arrow-down.d.ts +128 -0
- package/dist/ui/components/nm-icon/animated/arrow-left.d.ts +128 -0
- package/dist/ui/components/nm-icon/animated/arrow-right.d.ts +128 -0
- package/dist/ui/components/nm-icon/animated/arrow-up-down.d.ts +119 -0
- package/dist/ui/components/nm-icon/animated/arrow-up.d.ts +128 -0
- package/dist/ui/components/nm-icon/animated/audio-lines.d.ts +99 -0
- package/dist/ui/components/nm-icon/animated/bookmark-plus.d.ts +35 -0
- package/dist/ui/components/nm-icon/animated/bookmark.d.ts +52 -0
- package/dist/ui/components/nm-icon/animated/bot.d.ts +90 -0
- package/dist/ui/components/nm-icon/animated/calendar-days.d.ts +87 -0
- package/dist/ui/components/nm-icon/animated/calendar.d.ts +36 -0
- package/dist/ui/components/nm-icon/animated/camera.d.ts +50 -0
- package/dist/ui/components/nm-icon/animated/chart-column-increasing.d.ts +37 -0
- package/dist/ui/components/nm-icon/animated/chart-column.d.ts +86 -0
- package/dist/ui/components/nm-icon/animated/chart-line.d.ts +51 -0
- package/dist/ui/components/nm-icon/animated/check-check.d.ts +50 -0
- package/dist/ui/components/nm-icon/animated/check.d.ts +25 -0
- package/dist/ui/components/nm-icon/animated/chevron-down.d.ts +39 -0
- package/dist/ui/components/nm-icon/animated/chevron-left.d.ts +39 -0
- package/dist/ui/components/nm-icon/animated/chevron-right.d.ts +39 -0
- package/dist/ui/components/nm-icon/animated/chevron-up.d.ts +39 -0
- package/dist/ui/components/nm-icon/animated/circle-alert.d.ts +23 -0
- package/dist/ui/components/nm-icon/animated/circle-check-big.d.ts +26 -0
- package/dist/ui/components/nm-icon/animated/circle-check.d.ts +26 -0
- package/dist/ui/components/nm-icon/animated/circle-plus.d.ts +44 -0
- package/dist/ui/components/nm-icon/animated/circle-question-mark.d.ts +22 -0
- package/dist/ui/components/nm-icon/animated/circle-x.d.ts +44 -0
- package/dist/ui/components/nm-icon/animated/clock-3.d.ts +44 -0
- package/dist/ui/components/nm-icon/animated/clock-4.d.ts +44 -0
- package/dist/ui/components/nm-icon/animated/clock.d.ts +44 -0
- package/dist/ui/components/nm-icon/animated/cloud-sun.d.ts +9 -0
- package/dist/ui/components/nm-icon/animated/cloud-upload.d.ts +45 -0
- package/dist/ui/components/nm-icon/animated/copy.d.ts +135 -0
- package/dist/ui/components/nm-icon/animated/download.d.ts +45 -0
- package/dist/ui/components/nm-icon/animated/ellipsis.d.ts +141 -0
- package/dist/ui/components/nm-icon/animated/external-link.d.ts +49 -0
- package/dist/ui/components/nm-icon/animated/eye-off.d.ts +23 -0
- package/dist/ui/components/nm-icon/animated/eye.d.ts +39 -0
- package/dist/ui/components/nm-icon/animated/fast-forward.d.ts +34 -0
- package/dist/ui/components/nm-icon/animated/file-clock.d.ts +48 -0
- package/dist/ui/components/nm-icon/animated/file-text.d.ts +56 -0
- package/dist/ui/components/nm-icon/animated/file.d.ts +67 -0
- package/dist/ui/components/nm-icon/animated/folder.d.ts +92 -0
- package/dist/ui/components/nm-icon/animated/gauge.d.ts +47 -0
- package/dist/ui/components/nm-icon/animated/globe.d.ts +21 -0
- package/dist/ui/components/nm-icon/animated/graduation-cap.d.ts +41 -0
- package/dist/ui/components/nm-icon/animated/headphones.d.ts +50 -0
- package/dist/ui/components/nm-icon/animated/image.d.ts +40 -0
- package/dist/ui/components/nm-icon/animated/index.d.ts +2 -0
- package/dist/ui/components/nm-icon/animated/info.d.ts +37 -0
- package/dist/ui/components/nm-icon/animated/key-round.d.ts +37 -0
- package/dist/ui/components/nm-icon/animated/layers.d.ts +61 -0
- package/dist/ui/components/nm-icon/animated/layout-dashboard.d.ts +131 -0
- package/dist/ui/components/nm-icon/animated/library-big.d.ts +29 -0
- package/dist/ui/components/nm-icon/animated/lightbulb.d.ts +51 -0
- package/dist/ui/components/nm-icon/animated/link.d.ts +193 -0
- package/dist/ui/components/nm-icon/animated/list-filter.d.ts +13 -0
- package/dist/ui/components/nm-icon/animated/list.d.ts +111 -0
- package/dist/ui/components/nm-icon/animated/loader-circle.d.ts +24 -0
- package/dist/ui/components/nm-icon/animated/lock.d.ts +94 -0
- package/dist/ui/components/nm-icon/animated/log-out.d.ts +45 -0
- package/dist/ui/components/nm-icon/animated/mail.d.ts +100 -0
- package/dist/ui/components/nm-icon/animated/map-pin.d.ts +67 -0
- package/dist/ui/components/nm-icon/animated/menu.d.ts +57 -0
- package/dist/ui/components/nm-icon/animated/message-circle-dashed.d.ts +34 -0
- package/dist/ui/components/nm-icon/animated/message-circle.d.ts +23 -0
- package/dist/ui/components/nm-icon/animated/message-square-plus.d.ts +49 -0
- package/dist/ui/components/nm-icon/animated/message-square-text.d.ts +104 -0
- package/dist/ui/components/nm-icon/animated/message-square.d.ts +23 -0
- package/dist/ui/components/nm-icon/animated/mic-off.d.ts +23 -0
- package/dist/ui/components/nm-icon/animated/mic.d.ts +37 -0
- package/dist/ui/components/nm-icon/animated/minimize.d.ts +139 -0
- package/dist/ui/components/nm-icon/animated/minus.d.ts +54 -0
- package/dist/ui/components/nm-icon/animated/moon.d.ts +62 -0
- package/dist/ui/components/nm-icon/animated/music.d.ts +22 -0
- package/dist/ui/components/nm-icon/animated/notebook-pen.d.ts +41 -0
- package/dist/ui/components/nm-icon/animated/panel-left.d.ts +29 -0
- package/dist/ui/components/nm-icon/animated/panel-right.d.ts +29 -0
- package/dist/ui/components/nm-icon/animated/paperclip.d.ts +49 -0
- package/dist/ui/components/nm-icon/animated/pause.d.ts +59 -0
- package/dist/ui/components/nm-icon/animated/pencil.d.ts +25 -0
- package/dist/ui/components/nm-icon/animated/pin-off.d.ts +44 -0
- package/dist/ui/components/nm-icon/animated/pin.d.ts +85 -0
- package/dist/ui/components/nm-icon/animated/plane-takeoff.d.ts +25 -0
- package/dist/ui/components/nm-icon/animated/play.d.ts +43 -0
- package/dist/ui/components/nm-icon/animated/plug-zap.d.ts +49 -0
- package/dist/ui/components/nm-icon/animated/plus.d.ts +95 -0
- package/dist/ui/components/nm-icon/animated/radio.d.ts +24 -0
- package/dist/ui/components/nm-icon/animated/refresh-cw.d.ts +55 -0
- package/dist/ui/components/nm-icon/animated/rocket.d.ts +48 -0
- package/dist/ui/components/nm-icon/animated/rotate-ccw.d.ts +51 -0
- package/dist/ui/components/nm-icon/animated/rotate-cw.d.ts +71 -0
- package/dist/ui/components/nm-icon/animated/save.d.ts +21 -0
- package/dist/ui/components/nm-icon/animated/search.d.ts +42 -0
- package/dist/ui/components/nm-icon/animated/send.d.ts +39 -0
- package/dist/ui/components/nm-icon/animated/settings.d.ts +39 -0
- package/dist/ui/components/nm-icon/animated/share-2.d.ts +122 -0
- package/dist/ui/components/nm-icon/animated/share.d.ts +40 -0
- package/dist/ui/components/nm-icon/animated/shield-check.d.ts +36 -0
- package/dist/ui/components/nm-icon/animated/shopping-bag.d.ts +35 -0
- package/dist/ui/components/nm-icon/animated/sliders-horizontal.d.ts +239 -0
- package/dist/ui/components/nm-icon/animated/sparkles.d.ts +205 -0
- package/dist/ui/components/nm-icon/animated/star.d.ts +48 -0
- package/dist/ui/components/nm-icon/animated/sun.d.ts +9 -0
- package/dist/ui/components/nm-icon/animated/terminal.d.ts +22 -0
- package/dist/ui/components/nm-icon/animated/trash-2.d.ts +61 -0
- package/dist/ui/components/nm-icon/animated/trash.d.ts +37 -0
- package/dist/ui/components/nm-icon/animated/trending-up.d.ts +40 -0
- package/dist/ui/components/nm-icon/animated/triangle-alert.d.ts +37 -0
- package/dist/ui/components/nm-icon/animated/trophy.d.ts +23 -0
- package/dist/ui/components/nm-icon/animated/type.d.ts +57 -0
- package/dist/ui/components/nm-icon/animated/upload.d.ts +49 -0
- package/dist/ui/components/nm-icon/animated/user-round.d.ts +33 -0
- package/dist/ui/components/nm-icon/animated/user.d.ts +33 -0
- package/dist/ui/components/nm-icon/animated/users-round.d.ts +93 -0
- package/dist/ui/components/nm-icon/animated/users.d.ts +93 -0
- package/dist/ui/components/nm-icon/animated/volume-2.d.ts +10 -0
- package/dist/ui/components/nm-icon/animated/wand-sparkles.d.ts +71 -0
- package/dist/ui/components/nm-icon/animated/x.d.ts +95 -0
- package/dist/ui/components/nm-icon/animated/zap.d.ts +65 -0
- package/dist/ui/components/nm-icon/animated/zoom-in.d.ts +35 -0
- package/dist/ui/components/nm-icon/animated/zoom-out.d.ts +53 -0
- package/dist/ui/components/nm-icon/nm-icon.d.ts +6 -3
- package/dist/ui/components/nm-icon/nm-lucide-extended.d.ts +3 -0
- package/dist/ui/components/nm-icon/nm-lucide.d.ts +7 -3
- package/dist/ui/components/nm-kbd/nm-kbd.d.ts +5 -0
- package/dist/ui/components/nm-menubar/nm-menubar.d.ts +2 -2
- package/dist/ui/components/nm-panel/nm-panel.d.ts +5 -1
- package/dist/ui/components/nm-popover/nm-popover.d.ts +2 -2
- package/dist/ui/components/nm-progress/nm-progress.d.ts +1 -1
- package/dist/ui/components/nm-radio-group/nm-radio-group.d.ts +2 -2
- package/dist/ui/components/nm-select/nm-select.d.ts +1 -1
- package/dist/ui/components/nm-skeleton/nm-skeleton.d.ts +3 -0
- package/dist/ui/components/nm-slider/nm-slider.d.ts +1 -1
- package/dist/ui/components/nm-small-icon-button/nm-small-icon-button.d.ts +3 -3
- package/dist/ui/components/nm-spinner/nm-spinner.d.ts +3 -0
- package/dist/ui/components/nm-switch/nm-switch.d.ts +1 -1
- package/dist/ui/components/nm-tabs/nm-tabs.d.ts +6 -0
- package/dist/ui/components/nm-toggle/nm-toggle.d.ts +1 -1
- package/dist/ui/components/nm-toolbar/nm-toolbar.d.ts +6 -2
- package/dist/ui/components/nm-tooltip/nm-tooltip.d.ts +1 -1
- package/dist/ui/components/nm-voice-orb/nm-voice-orb.d.ts +18 -0
- package/dist/ui/components/nm-voice-orb/use-nm-voice-orb-theme.d.ts +2 -0
- package/dist/ui/config/nm-app-panel.d.ts +2 -0
- package/dist/ui/config/nm-button.d.ts +6 -0
- package/dist/ui/config/nm-composer.d.ts +11 -0
- package/dist/ui/config/nm-icon-button.d.ts +0 -2
- package/dist/ui/config/nm-icons-extended.d.ts +1 -0
- package/dist/ui/config/nm-icons.d.ts +4 -1
- package/dist/ui/config/nm-voice-orb.d.ts +22 -0
- package/dist/ui/lib/nm-motion.d.ts +29 -0
- package/package.json +12 -8
- package/registry/index.json +5113 -72
- package/registry/ui/components/nm-ai/nm-ai.tsx +7 -4
- package/registry/ui/components/nm-alert/nm-alert.css +85 -0
- package/registry/ui/components/nm-alert/nm-alert.tsx +35 -0
- package/registry/ui/components/nm-button/nm-button.css +24 -0
- package/registry/ui/components/nm-button/nm-button.tsx +41 -20
- package/registry/ui/components/nm-checkbox/nm-checkbox.tsx +1 -1
- package/registry/ui/components/nm-chip/nm-chip.css +25 -0
- package/registry/ui/components/nm-chip/nm-chip.tsx +9 -3
- package/registry/ui/components/nm-collapsible/nm-collapsible.css +3 -0
- package/registry/ui/components/nm-collapsible/nm-collapsible.tsx +16 -0
- package/registry/ui/components/nm-combobox/nm-combobox.tsx +1 -1
- package/registry/ui/components/nm-command/nm-command.css +48 -0
- package/registry/ui/components/nm-command/nm-command.tsx +19 -5
- package/registry/ui/components/nm-composer/nm-composer.css +87 -3
- package/registry/ui/components/nm-composer/nm-composer.tsx +321 -33
- package/registry/ui/components/nm-context-menu/nm-context-menu.tsx +1 -1
- package/registry/ui/components/nm-dialog/nm-dialog.css +5 -6
- package/registry/ui/components/nm-dialog/nm-dialog.tsx +1 -1
- package/registry/ui/components/nm-dropdown/nm-dropdown.css +5 -0
- package/registry/ui/components/nm-dropdown/nm-dropdown.tsx +29 -250
- package/registry/ui/components/nm-dropdown-menu/nm-dropdown-menu.css +8 -0
- package/registry/ui/components/nm-dropdown-menu/nm-dropdown-menu.tsx +85 -6
- package/registry/ui/components/nm-hover-card/nm-hover-card.tsx +1 -1
- package/registry/ui/components/nm-icon/animated/activity.tsx +109 -0
- package/registry/ui/components/nm-icon/animated/archive.tsx +85 -0
- package/registry/ui/components/nm-icon/animated/arrow-down.tsx +149 -0
- package/registry/ui/components/nm-icon/animated/arrow-left.tsx +149 -0
- package/registry/ui/components/nm-icon/animated/arrow-right.tsx +149 -0
- package/registry/ui/components/nm-icon/animated/arrow-up-down.tsx +168 -0
- package/registry/ui/components/nm-icon/animated/arrow-up.tsx +149 -0
- package/registry/ui/components/nm-icon/animated/audio-lines.tsx +190 -0
- package/registry/ui/components/nm-icon/animated/bookmark-plus.tsx +65 -0
- package/registry/ui/components/nm-icon/animated/bookmark.tsx +77 -0
- package/registry/ui/components/nm-icon/animated/bot.tsx +167 -0
- package/registry/ui/components/nm-icon/animated/calendar-days.tsx +128 -0
- package/registry/ui/components/nm-icon/animated/calendar.tsx +83 -0
- package/registry/ui/components/nm-icon/animated/camera.tsx +85 -0
- package/registry/ui/components/nm-icon/animated/chart-column-increasing.tsx +150 -0
- package/registry/ui/components/nm-icon/animated/chart-column.tsx +179 -0
- package/registry/ui/components/nm-icon/animated/chart-line.tsx +88 -0
- package/registry/ui/components/nm-icon/animated/check-check.tsx +105 -0
- package/registry/ui/components/nm-icon/animated/check.tsx +70 -0
- package/registry/ui/components/nm-icon/animated/chevron-down.tsx +73 -0
- package/registry/ui/components/nm-icon/animated/chevron-left.tsx +73 -0
- package/registry/ui/components/nm-icon/animated/chevron-right.tsx +73 -0
- package/registry/ui/components/nm-icon/animated/chevron-up.tsx +73 -0
- package/registry/ui/components/nm-icon/animated/circle-alert.tsx +84 -0
- package/registry/ui/components/nm-icon/animated/circle-check-big.tsx +75 -0
- package/registry/ui/components/nm-icon/animated/circle-check.tsx +77 -0
- package/registry/ui/components/nm-icon/animated/circle-plus.tsx +93 -0
- package/registry/ui/components/nm-icon/animated/circle-question-mark.tsx +62 -0
- package/registry/ui/components/nm-icon/animated/circle-x.tsx +93 -0
- package/registry/ui/components/nm-icon/animated/clock-3.tsx +95 -0
- package/registry/ui/components/nm-icon/animated/clock-4.tsx +95 -0
- package/registry/ui/components/nm-icon/animated/clock.tsx +95 -0
- package/registry/ui/components/nm-icon/animated/cloud-sun.tsx +130 -0
- package/registry/ui/components/nm-icon/animated/cloud-upload.tsx +93 -0
- package/registry/ui/components/nm-icon/animated/copy.tsx +153 -0
- package/registry/ui/components/nm-icon/animated/download.tsx +93 -0
- package/registry/ui/components/nm-icon/animated/ellipsis.tsx +189 -0
- package/registry/ui/components/nm-icon/animated/external-link.tsx +97 -0
- package/registry/ui/components/nm-icon/animated/eye-off.tsx +63 -0
- package/registry/ui/components/nm-icon/animated/eye.tsx +82 -0
- package/registry/ui/components/nm-icon/animated/fast-forward.tsx +72 -0
- package/registry/ui/components/nm-icon/animated/file-clock.tsx +105 -0
- package/registry/ui/components/nm-icon/animated/file-text.tsx +102 -0
- package/registry/ui/components/nm-icon/animated/file.tsx +124 -0
- package/registry/ui/components/nm-icon/animated/folder.tsx +132 -0
- package/registry/ui/components/nm-icon/animated/gauge.tsx +84 -0
- package/registry/ui/components/nm-icon/animated/globe.tsx +61 -0
- package/registry/ui/components/nm-icon/animated/graduation-cap.tsx +92 -0
- package/registry/ui/components/nm-icon/animated/headphones.tsx +85 -0
- package/registry/ui/components/nm-icon/animated/image.tsx +88 -0
- package/registry/ui/components/nm-icon/animated/index.ts +251 -0
- package/registry/ui/components/nm-icon/animated/info.tsx +75 -0
- package/registry/ui/components/nm-icon/animated/key-round.tsx +67 -0
- package/registry/ui/components/nm-icon/animated/layers.tsx +116 -0
- package/registry/ui/components/nm-icon/animated/layout-dashboard.tsx +176 -0
- package/registry/ui/components/nm-icon/animated/library-big.tsx +89 -0
- package/registry/ui/components/nm-icon/animated/lightbulb.tsx +106 -0
- package/registry/ui/components/nm-icon/animated/link.tsx +210 -0
- package/registry/ui/components/nm-icon/animated/list-filter.tsx +78 -0
- package/registry/ui/components/nm-icon/animated/list.tsx +184 -0
- package/registry/ui/components/nm-icon/animated/loader-circle.tsx +68 -0
- package/registry/ui/components/nm-icon/animated/lock.tsx +152 -0
- package/registry/ui/components/nm-icon/animated/log-out.tsx +93 -0
- package/registry/ui/components/nm-icon/animated/mail.tsx +131 -0
- package/registry/ui/components/nm-icon/animated/map-pin.tsx +111 -0
- package/registry/ui/components/nm-icon/animated/menu.tsx +121 -0
- package/registry/ui/components/nm-icon/animated/message-circle-dashed.tsx +140 -0
- package/registry/ui/components/nm-icon/animated/message-circle.tsx +66 -0
- package/registry/ui/components/nm-icon/animated/message-square-plus.tsx +106 -0
- package/registry/ui/components/nm-icon/animated/message-square-text.tsx +153 -0
- package/registry/ui/components/nm-icon/animated/message-square.tsx +66 -0
- package/registry/ui/components/nm-icon/animated/mic-off.tsx +65 -0
- package/registry/ui/components/nm-icon/animated/mic.tsx +77 -0
- package/registry/ui/components/nm-icon/animated/minimize.tsx +164 -0
- package/registry/ui/components/nm-icon/animated/minus.tsx +84 -0
- package/registry/ui/components/nm-icon/animated/moon.tsx +98 -0
- package/registry/ui/components/nm-icon/animated/music.tsx +62 -0
- package/registry/ui/components/nm-icon/animated/notebook-pen.tsx +114 -0
- package/registry/ui/components/nm-icon/animated/panel-left.tsx +77 -0
- package/registry/ui/components/nm-icon/animated/panel-right.tsx +77 -0
- package/registry/ui/components/nm-icon/animated/paperclip.tsx +83 -0
- package/registry/ui/components/nm-icon/animated/pause.tsx +116 -0
- package/registry/ui/components/nm-icon/animated/pencil.tsx +70 -0
- package/registry/ui/components/nm-icon/animated/pin-off.tsx +102 -0
- package/registry/ui/components/nm-icon/animated/pin.tsx +124 -0
- package/registry/ui/components/nm-icon/animated/plane-takeoff.tsx +62 -0
- package/registry/ui/components/nm-icon/animated/play.tsx +74 -0
- package/registry/ui/components/nm-icon/animated/plug-zap.tsx +117 -0
- package/registry/ui/components/nm-icon/animated/plus.tsx +122 -0
- package/registry/ui/components/nm-icon/animated/radio.tsx +137 -0
- package/registry/ui/components/nm-icon/animated/refresh-cw.tsx +103 -0
- package/registry/ui/components/nm-icon/animated/rocket.tsx +93 -0
- package/registry/ui/components/nm-icon/animated/rotate-ccw.tsx +87 -0
- package/registry/ui/components/nm-icon/animated/rotate-cw.tsx +98 -0
- package/registry/ui/components/nm-icon/animated/save.tsx +58 -0
- package/registry/ui/components/nm-icon/animated/search.tsx +90 -0
- package/registry/ui/components/nm-icon/animated/send.tsx +87 -0
- package/registry/ui/components/nm-icon/animated/settings.tsx +92 -0
- package/registry/ui/components/nm-icon/animated/share-2.tsx +148 -0
- package/registry/ui/components/nm-icon/animated/share.tsx +76 -0
- package/registry/ui/components/nm-icon/animated/shield-check.tsx +70 -0
- package/registry/ui/components/nm-icon/animated/shopping-bag.tsx +71 -0
- package/registry/ui/components/nm-icon/animated/sliders-horizontal.tsx +243 -0
- package/registry/ui/components/nm-icon/animated/sparkles.tsx +227 -0
- package/registry/ui/components/nm-icon/animated/star.tsx +86 -0
- package/registry/ui/components/nm-icon/animated/sun.tsx +148 -0
- package/registry/ui/components/nm-icon/animated/terminal.tsx +71 -0
- package/registry/ui/components/nm-icon/animated/trash-2.tsx +136 -0
- package/registry/ui/components/nm-icon/animated/trash.tsx +94 -0
- package/registry/ui/components/nm-icon/animated/trending-up.tsx +75 -0
- package/registry/ui/components/nm-icon/animated/triangle-alert.tsx +75 -0
- package/registry/ui/components/nm-icon/animated/trophy.tsx +62 -0
- package/registry/ui/components/nm-icon/animated/type.tsx +106 -0
- package/registry/ui/components/nm-icon/animated/upload.tsx +94 -0
- package/registry/ui/components/nm-icon/animated/user-round.tsx +84 -0
- package/registry/ui/components/nm-icon/animated/user.tsx +84 -0
- package/registry/ui/components/nm-icon/animated/users-round.tsx +156 -0
- package/registry/ui/components/nm-icon/animated/users.tsx +156 -0
- package/registry/ui/components/nm-icon/animated/volume-2.tsx +119 -0
- package/registry/ui/components/nm-icon/animated/wand-sparkles.tsx +111 -0
- package/registry/ui/components/nm-icon/animated/x.tsx +122 -0
- package/registry/ui/components/nm-icon/animated/zap.tsx +86 -0
- package/registry/ui/components/nm-icon/animated/zoom-in.tsx +66 -0
- package/registry/ui/components/nm-icon/animated/zoom-out.tsx +85 -0
- package/registry/ui/components/nm-icon/nm-icon.css +0 -1
- package/registry/ui/components/nm-icon/nm-icon.tsx +20 -5
- package/registry/ui/components/nm-icon/nm-lucide-extended.tsx +284 -0
- package/registry/ui/components/nm-icon/nm-lucide.tsx +55 -5
- package/registry/ui/components/nm-icon-border/nm-icon-border.tsx +1 -1
- package/registry/ui/components/nm-input/nm-input.css +1 -0
- package/registry/ui/components/nm-kbd/nm-kbd.css +23 -0
- package/registry/ui/components/nm-kbd/nm-kbd.tsx +12 -0
- package/registry/ui/components/nm-menubar/nm-menubar.tsx +2 -2
- package/registry/ui/components/nm-panel/nm-panel.css +7 -0
- package/registry/ui/components/nm-panel/nm-panel.tsx +19 -2
- package/registry/ui/components/nm-popover/nm-popover.tsx +4 -3
- package/registry/ui/components/nm-progress/nm-progress.tsx +1 -1
- package/registry/ui/components/nm-radio-group/nm-radio-group.tsx +2 -2
- package/registry/ui/components/nm-segmented/nm-segmented.tsx +1 -1
- package/registry/ui/components/nm-select/nm-select.tsx +1 -1
- package/registry/ui/components/nm-skeleton/nm-skeleton.css +17 -0
- package/registry/ui/components/nm-skeleton/nm-skeleton.tsx +7 -0
- package/registry/ui/components/nm-slider/nm-slider.tsx +1 -1
- package/registry/ui/components/nm-small-icon-button/nm-small-icon-button.tsx +3 -3
- package/registry/ui/components/nm-spinner/nm-spinner.css +22 -0
- package/registry/ui/components/nm-spinner/nm-spinner.tsx +7 -0
- package/registry/ui/components/nm-switch/nm-switch.css +20 -3
- package/registry/ui/components/nm-switch/nm-switch.tsx +1 -1
- package/registry/ui/components/nm-tabs/nm-tabs.css +4 -0
- package/registry/ui/components/nm-tabs/nm-tabs.tsx +19 -0
- package/registry/ui/components/nm-textarea/nm-textarea.css +1 -0
- package/registry/ui/components/nm-toggle/nm-toggle.tsx +1 -1
- package/registry/ui/components/nm-toolbar/nm-toolbar.css +0 -6
- package/registry/ui/components/nm-toolbar/nm-toolbar.tsx +16 -7
- package/registry/ui/components/nm-tooltip/nm-tooltip.css +17 -0
- package/registry/ui/components/nm-tooltip/nm-tooltip.tsx +1 -1
- package/registry/ui/components/nm-voice-orb/nm-voice-orb.css +17 -0
- package/registry/ui/components/nm-voice-orb/nm-voice-orb.tsx +112 -0
- package/registry/ui/components/nm-voice-orb/use-nm-voice-orb-theme.ts +34 -0
- package/registry/ui/components/nordman-icon-button/nordman-icon-button.css +6 -9
- package/registry/ui/components/nordman-icon-button/nordman-icon-button.tsx +7 -3
- package/registry/ui/config/nm-button.ts +6 -0
- package/registry/ui/config/nm-composer.ts +12 -0
- package/registry/ui/config/nm-icon-button.ts +0 -2
- package/registry/ui/config/nm-icons-extended.ts +141 -0
- package/registry/ui/config/nm-icons.ts +6 -2
- package/registry/ui/config/nm-voice-orb.ts +50 -0
- package/registry/ui/lib/nm-motion.ts +30 -0
- package/registry/ui/styles/tokens.css +7 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { useMemo, type ReactNode } from 'react';
|
|
2
|
+
import { Orb, type OrbAdapter, type OrbSignal, type OrbTheme } from 'orb-ui';
|
|
3
|
+
import {
|
|
4
|
+
NM_VOICE_ORB_CLASSES,
|
|
5
|
+
NM_VOICE_ORB_SIZE,
|
|
6
|
+
toOrbUiState,
|
|
7
|
+
type NmVoiceOrbAgentState,
|
|
8
|
+
} from '../../config/nm-voice-orb.ts';
|
|
9
|
+
import { useNmVoiceOrbTheme } from './use-nm-voice-orb-theme.ts';
|
|
10
|
+
import { createLogger } from '../../kit-logger.ts';
|
|
11
|
+
|
|
12
|
+
const logger = createLogger('interface-nm-voice-orb');
|
|
13
|
+
|
|
14
|
+
export type NmVoiceOrbProps = {
|
|
15
|
+
adapter?: OrbAdapter;
|
|
16
|
+
signal?: OrbSignal;
|
|
17
|
+
agentState?: NmVoiceOrbAgentState;
|
|
18
|
+
theme?: OrbTheme;
|
|
19
|
+
size?: number;
|
|
20
|
+
inputVolume?: number;
|
|
21
|
+
outputVolume?: number;
|
|
22
|
+
getInputVolume?: () => number;
|
|
23
|
+
getOutputVolume?: () => number;
|
|
24
|
+
label?: string;
|
|
25
|
+
testId?: string;
|
|
26
|
+
onClick?: () => void;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
function clamp01(value: number | undefined): number {
|
|
30
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
33
|
+
return Math.min(1, Math.max(0, value));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function ensureMatchMedia(): void {
|
|
37
|
+
if (typeof window === 'undefined' || typeof window.matchMedia === 'function') {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
Object.defineProperty(window, 'matchMedia', {
|
|
41
|
+
writable: true,
|
|
42
|
+
configurable: true,
|
|
43
|
+
value: (query: string) => ({
|
|
44
|
+
matches: false,
|
|
45
|
+
media: query,
|
|
46
|
+
onchange: null,
|
|
47
|
+
addListener: () => {},
|
|
48
|
+
removeListener: () => {},
|
|
49
|
+
addEventListener: () => {},
|
|
50
|
+
removeEventListener: () => {},
|
|
51
|
+
dispatchEvent: () => false,
|
|
52
|
+
}),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function NmVoiceOrb(props: NmVoiceOrbProps): ReactNode {
|
|
57
|
+
ensureMatchMedia();
|
|
58
|
+
const appearanceTheme = useNmVoiceOrbTheme();
|
|
59
|
+
|
|
60
|
+
const {
|
|
61
|
+
signal,
|
|
62
|
+
adapter,
|
|
63
|
+
inputVolume: propInputVolume,
|
|
64
|
+
outputVolume: propOutputVolume,
|
|
65
|
+
getInputVolume,
|
|
66
|
+
getOutputVolume,
|
|
67
|
+
} = props;
|
|
68
|
+
const mappedState = toOrbUiState(props.agentState);
|
|
69
|
+
const fallbackSignal = useMemo<OrbSignal | undefined>(() => {
|
|
70
|
+
if (signal) {
|
|
71
|
+
return signal;
|
|
72
|
+
}
|
|
73
|
+
if (adapter) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
const inputVolume = clamp01(propInputVolume ?? getInputVolume?.() ?? 0);
|
|
77
|
+
const outputVolume = clamp01(
|
|
78
|
+
propOutputVolume ?? getOutputVolume?.() ?? (mappedState === 'speaking' ? 0.72 : 0),
|
|
79
|
+
);
|
|
80
|
+
return {
|
|
81
|
+
state: mappedState,
|
|
82
|
+
inputVolume,
|
|
83
|
+
outputVolume,
|
|
84
|
+
};
|
|
85
|
+
}, [
|
|
86
|
+
mappedState,
|
|
87
|
+
adapter,
|
|
88
|
+
getInputVolume,
|
|
89
|
+
getOutputVolume,
|
|
90
|
+
propInputVolume,
|
|
91
|
+
propOutputVolume,
|
|
92
|
+
signal,
|
|
93
|
+
]);
|
|
94
|
+
|
|
95
|
+
logger.debug('render', 'orb-ui', { state: mappedState });
|
|
96
|
+
|
|
97
|
+
return (
|
|
98
|
+
<Orb
|
|
99
|
+
adapter={props.adapter}
|
|
100
|
+
signal={fallbackSignal}
|
|
101
|
+
state={props.agentState != null ? mappedState : undefined}
|
|
102
|
+
theme={props.theme ?? appearanceTheme}
|
|
103
|
+
size={props.size ?? NM_VOICE_ORB_SIZE}
|
|
104
|
+
className={NM_VOICE_ORB_CLASSES.root}
|
|
105
|
+
aria-label={props.label ?? 'Avsluta röstläge'}
|
|
106
|
+
onStart={props.onClick}
|
|
107
|
+
onStop={props.onClick}
|
|
108
|
+
data-testid={props.testId ?? 'voice-orb'}
|
|
109
|
+
data-agent-state={props.agentState ?? mappedState}
|
|
110
|
+
/>
|
|
111
|
+
);
|
|
112
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { defineOrbTheme, type OrbTheme } from 'orb-ui';
|
|
3
|
+
import { deriveCloudOrbAppearance } from '../../lib/appearance/cloudOrbAppearance.ts';
|
|
4
|
+
import { NM_APPEARANCE_APPLIED_EVENT } from '../../config/nm-appearance.ts';
|
|
5
|
+
import { NM_ORB_UI_THEME } from '../../config/nm-voice-orb.ts';
|
|
6
|
+
|
|
7
|
+
function readAppearanceChannel(name: string, fallback: string): string {
|
|
8
|
+
if (typeof document === 'undefined') {
|
|
9
|
+
return fallback;
|
|
10
|
+
}
|
|
11
|
+
const value = getComputedStyle(document.documentElement).getPropertyValue(name).trim();
|
|
12
|
+
return value.length > 0 ? value : fallback;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function useNmVoiceOrbTheme(): OrbTheme {
|
|
16
|
+
const [revision, setRevision] = useState(0);
|
|
17
|
+
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const sync = () => setRevision((value) => value + 1);
|
|
20
|
+
window.addEventListener(NM_APPEARANCE_APPLIED_EVENT, sync);
|
|
21
|
+
return () => window.removeEventListener(NM_APPEARANCE_APPLIED_EVENT, sync);
|
|
22
|
+
}, []);
|
|
23
|
+
|
|
24
|
+
return useMemo(() => {
|
|
25
|
+
void revision;
|
|
26
|
+
const accent = readAppearanceChannel('--nm-accent', '#D2BB9C');
|
|
27
|
+
const canvas = readAppearanceChannel('--nm-canvas', '#000000');
|
|
28
|
+
const fg = readAppearanceChannel('--nm-fg', '#FFFFFF');
|
|
29
|
+
return defineOrbTheme({
|
|
30
|
+
...NM_ORB_UI_THEME,
|
|
31
|
+
appearance: deriveCloudOrbAppearance(accent, canvas, fg),
|
|
32
|
+
});
|
|
33
|
+
}, [revision]);
|
|
34
|
+
}
|
|
@@ -30,8 +30,10 @@
|
|
|
30
30
|
cursor: default;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/* Raised sits on a surface of its own with an edge, so it reads on any background. Panel has no edge. */
|
|
33
34
|
.nm-icon-button--raised {
|
|
34
35
|
background: var(--nm-raised);
|
|
36
|
+
box-shadow: inset 0 0 0 var(--nm-rule) var(--nm-line-strong);
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
.nm-icon-button--quiet {
|
|
@@ -39,6 +41,10 @@
|
|
|
39
41
|
color: var(--nm-fg-subtle);
|
|
40
42
|
}
|
|
41
43
|
|
|
44
|
+
.nm-icon-button--quiet[data-active='true'] {
|
|
45
|
+
color: var(--nm-fg);
|
|
46
|
+
}
|
|
47
|
+
|
|
42
48
|
.nm-icon-button--quiet.nm-icon-button--active:not(:disabled) {
|
|
43
49
|
background: var(--nm-raised);
|
|
44
50
|
color: var(--nm-fg);
|
|
@@ -61,15 +67,6 @@
|
|
|
61
67
|
color: var(--nm-canvas);
|
|
62
68
|
}
|
|
63
69
|
|
|
64
|
-
.nm-icon-button--subtle {
|
|
65
|
-
background: transparent;
|
|
66
|
-
color: var(--nm-fg-subtle);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
.nm-icon-button--subtle[data-active='true'] {
|
|
70
|
-
color: var(--nm-fg);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
70
|
.nm-icon-button--panel,
|
|
74
71
|
.nm-icon-button--panel:hover:not(:disabled):not([aria-disabled='true']),
|
|
75
72
|
.nm-icon-button--panel:focus-visible:not(:disabled):not([aria-disabled='true']) {
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
} from '../../config/nm-icon-button.ts';
|
|
8
8
|
import { NORDMAN_CHROME_ICONS, type NordmanChromeIconId } from '../../config/nordman-chrome.ts';
|
|
9
9
|
import { createLogger } from '../../kit-logger.ts';
|
|
10
|
+
import { AnimateIcon, Button as MotionButton } from '../../lib/nm-motion.ts';
|
|
10
11
|
import { NmIcon } from '../nm-icon/nm-icon.tsx';
|
|
11
12
|
|
|
12
13
|
const logger = createLogger('interface-nordman-icon-button');
|
|
@@ -174,11 +175,14 @@ export const NordmanIconButton = forwardRef<HTMLButtonElement, NordmanIconButton
|
|
|
174
175
|
</a>
|
|
175
176
|
);
|
|
176
177
|
}
|
|
177
|
-
|
|
178
|
-
<
|
|
178
|
+
const button = (
|
|
179
|
+
<MotionButton {...(rest as object)} {...shared} ref={ref} type={type ?? 'button'} hoverScale={rest.disabled ? 1 : 1.08} tapScale={rest.disabled ? 1 : 0.92}>
|
|
179
180
|
{face}
|
|
180
|
-
</
|
|
181
|
+
</MotionButton>
|
|
181
182
|
);
|
|
183
|
+
// The icon plays its animation when the button is hovered.
|
|
184
|
+
// Always wrapped: a control that swaps its glyph for an image must stay the same element.
|
|
185
|
+
return <AnimateIcon animateOnHover={glyph != null} asChild>{button}</AnimateIcon>;
|
|
182
186
|
},
|
|
183
187
|
);
|
|
184
188
|
|
|
@@ -4,6 +4,10 @@ export const NM_BUTTON_TONES = {
|
|
|
4
4
|
muted: 'muted',
|
|
5
5
|
panel: 'panel',
|
|
6
6
|
danger: 'danger',
|
|
7
|
+
/** No fill until hovered. For actions that sit inside other content. */
|
|
8
|
+
ghost: 'ghost',
|
|
9
|
+
/** Text with an underline on hover. */
|
|
10
|
+
link: 'link',
|
|
7
11
|
} as const;
|
|
8
12
|
|
|
9
13
|
export type NmButtonTone = (typeof NM_BUTTON_TONES)[keyof typeof NM_BUTTON_TONES];
|
|
@@ -24,6 +28,8 @@ export const NM_BUTTON_CLASSES = {
|
|
|
24
28
|
muted: 'nm-button--muted',
|
|
25
29
|
panel: 'nm-button--panel',
|
|
26
30
|
danger: 'nm-button--danger',
|
|
31
|
+
ghost: 'nm-button--ghost',
|
|
32
|
+
link: 'nm-button--link',
|
|
27
33
|
default: 'nm-button--default',
|
|
28
34
|
compact: 'nm-button--compact',
|
|
29
35
|
chip: 'nm-button--chip',
|
|
@@ -7,6 +7,11 @@ export const NM_COMPOSER_COPY = {
|
|
|
7
7
|
attach: 'Add',
|
|
8
8
|
mic: 'Dictate',
|
|
9
9
|
voice: 'Voice mode',
|
|
10
|
+
voiceEnd: 'End voice mode',
|
|
11
|
+
mute: 'Mute microphone',
|
|
12
|
+
unmute: 'Unmute microphone',
|
|
13
|
+
cancel: 'Cancel',
|
|
14
|
+
done: 'Done',
|
|
10
15
|
send: 'Send',
|
|
11
16
|
stop: 'Stop',
|
|
12
17
|
remove: (name: string) => `Remove ${name}`,
|
|
@@ -15,6 +20,9 @@ export const NM_COMPOSER_COPY = {
|
|
|
15
20
|
removeQueued: 'Remove queued message',
|
|
16
21
|
} as const;
|
|
17
22
|
|
|
23
|
+
/** Wraps an inline chip's label inside the field text. */
|
|
24
|
+
export const NM_COMPOSER_INLINE_MARK = '\u2060';
|
|
25
|
+
|
|
18
26
|
export const NM_COMPOSER_CLASSES = {
|
|
19
27
|
root: 'nm-composer',
|
|
20
28
|
stack: 'nm-composer-stack',
|
|
@@ -25,6 +33,10 @@ export const NM_COMPOSER_CLASSES = {
|
|
|
25
33
|
queuedActions: 'nm-composer__queued-actions',
|
|
26
34
|
attachments: 'nm-composer__attachments',
|
|
27
35
|
field: 'nm-composer__field',
|
|
36
|
+
listening: 'nm-composer__listening',
|
|
37
|
+
fieldWrap: 'nm-composer__field-wrap',
|
|
38
|
+
inline: 'nm-composer__inline',
|
|
39
|
+
inlineChip: 'nm-composer__inline-chip',
|
|
28
40
|
bar: 'nm-composer__bar',
|
|
29
41
|
start: 'nm-composer__start',
|
|
30
42
|
end: 'nm-composer__end',
|
|
@@ -3,7 +3,6 @@ export const NM_ICON_BUTTON_TONES = {
|
|
|
3
3
|
raised: 'raised',
|
|
4
4
|
quiet: 'quiet',
|
|
5
5
|
solid: 'solid',
|
|
6
|
-
subtle: 'subtle',
|
|
7
6
|
panel: 'panel',
|
|
8
7
|
invert: 'invert',
|
|
9
8
|
} as const;
|
|
@@ -18,7 +17,6 @@ export const NM_ICON_BUTTON_CLASSES = {
|
|
|
18
17
|
raised: 'nm-icon-button--raised',
|
|
19
18
|
quiet: 'nm-icon-button--quiet',
|
|
20
19
|
solid: 'nm-icon-button--solid',
|
|
21
|
-
subtle: 'nm-icon-button--subtle',
|
|
22
20
|
panel: 'nm-icon-button--panel',
|
|
23
21
|
invert: 'nm-icon-button--invert',
|
|
24
22
|
} as const;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/* Generated by scripts/extend-icons.mjs. Lucide icons NIF products use beyond the core set. */
|
|
2
|
+
export const NM_EXTENDED_ICON_IDS = [
|
|
3
|
+
'activity',
|
|
4
|
+
'app-window',
|
|
5
|
+
'archive-restore',
|
|
6
|
+
'arrow-down',
|
|
7
|
+
'arrow-left-right',
|
|
8
|
+
'arrow-right-left',
|
|
9
|
+
'arrow-up-down',
|
|
10
|
+
'arrow-up-left',
|
|
11
|
+
'ban',
|
|
12
|
+
'beaker',
|
|
13
|
+
'bitcoin',
|
|
14
|
+
'bone',
|
|
15
|
+
'book-copy',
|
|
16
|
+
'bookmark',
|
|
17
|
+
'bookmark-plus',
|
|
18
|
+
'calendar-days',
|
|
19
|
+
'chart-column',
|
|
20
|
+
'chart-column-increasing',
|
|
21
|
+
'chart-line',
|
|
22
|
+
'check-check',
|
|
23
|
+
'chevron-left',
|
|
24
|
+
'chevron-right',
|
|
25
|
+
'chevron-up',
|
|
26
|
+
'chevrons-up-down',
|
|
27
|
+
'circle',
|
|
28
|
+
'circle-alert',
|
|
29
|
+
'circle-check-big',
|
|
30
|
+
'circle-dashed',
|
|
31
|
+
'circle-dot',
|
|
32
|
+
'circle-plus',
|
|
33
|
+
'circle-question-mark',
|
|
34
|
+
'circle-x',
|
|
35
|
+
'clock-3',
|
|
36
|
+
'clock-4',
|
|
37
|
+
'cloud-sun',
|
|
38
|
+
'code-xml',
|
|
39
|
+
'copy-check',
|
|
40
|
+
'corner-down-right',
|
|
41
|
+
'database',
|
|
42
|
+
'dices',
|
|
43
|
+
'earth',
|
|
44
|
+
'external-link',
|
|
45
|
+
'eye',
|
|
46
|
+
'eye-off',
|
|
47
|
+
'fast-forward',
|
|
48
|
+
'feather',
|
|
49
|
+
'file-clock',
|
|
50
|
+
'file-code',
|
|
51
|
+
'file-image',
|
|
52
|
+
'file-json',
|
|
53
|
+
'file-pen-line',
|
|
54
|
+
'file-plus-2',
|
|
55
|
+
'file-question-mark',
|
|
56
|
+
'file-search',
|
|
57
|
+
'file-spreadsheet',
|
|
58
|
+
'file-type-2',
|
|
59
|
+
'file-up',
|
|
60
|
+
'file-x-2',
|
|
61
|
+
'files',
|
|
62
|
+
'film',
|
|
63
|
+
'folder-kanban',
|
|
64
|
+
'funnel-x',
|
|
65
|
+
'git-branch-plus',
|
|
66
|
+
'git-commit-horizontal',
|
|
67
|
+
'git-fork',
|
|
68
|
+
'graduation-cap',
|
|
69
|
+
'grip-vertical',
|
|
70
|
+
'history',
|
|
71
|
+
'image-off',
|
|
72
|
+
'image-up',
|
|
73
|
+
'info',
|
|
74
|
+
'key-round',
|
|
75
|
+
'keyboard',
|
|
76
|
+
'laptop',
|
|
77
|
+
'layers',
|
|
78
|
+
'layout-dashboard',
|
|
79
|
+
'library',
|
|
80
|
+
'life-buoy',
|
|
81
|
+
'lightbulb',
|
|
82
|
+
'link',
|
|
83
|
+
'link-2-off',
|
|
84
|
+
'list',
|
|
85
|
+
'list-tree',
|
|
86
|
+
'map-pin',
|
|
87
|
+
'message-circle-question-mark',
|
|
88
|
+
'message-square',
|
|
89
|
+
'message-square-plus',
|
|
90
|
+
'message-square-text',
|
|
91
|
+
'messages-square',
|
|
92
|
+
'minimize-2',
|
|
93
|
+
'mouse-pointer-click',
|
|
94
|
+
'newspaper',
|
|
95
|
+
'notebook-pen',
|
|
96
|
+
'octagon-pause',
|
|
97
|
+
'paperclip',
|
|
98
|
+
'pen-line',
|
|
99
|
+
'pen-tool',
|
|
100
|
+
'pin-off',
|
|
101
|
+
'plane-takeoff',
|
|
102
|
+
'plug-zap',
|
|
103
|
+
'qr-code',
|
|
104
|
+
'radio',
|
|
105
|
+
'refresh-cw',
|
|
106
|
+
'rocket',
|
|
107
|
+
'rotate-cw',
|
|
108
|
+
'scale',
|
|
109
|
+
'scan-search',
|
|
110
|
+
'scroll-text',
|
|
111
|
+
'send',
|
|
112
|
+
'share-2',
|
|
113
|
+
'shield',
|
|
114
|
+
'shield-check',
|
|
115
|
+
'shield-ellipsis',
|
|
116
|
+
'shopping-bag',
|
|
117
|
+
'sliders-horizontal',
|
|
118
|
+
'sparkles',
|
|
119
|
+
'square-pen',
|
|
120
|
+
'square-slash',
|
|
121
|
+
'square-terminal',
|
|
122
|
+
'star',
|
|
123
|
+
'table-2',
|
|
124
|
+
'text-quote',
|
|
125
|
+
'trash',
|
|
126
|
+
'trending-up',
|
|
127
|
+
'triangle-alert',
|
|
128
|
+
'trophy',
|
|
129
|
+
'type',
|
|
130
|
+
'user',
|
|
131
|
+
'user-check',
|
|
132
|
+
'users',
|
|
133
|
+
'utensils-crossed',
|
|
134
|
+
'variable',
|
|
135
|
+
'video',
|
|
136
|
+
'wand-sparkles',
|
|
137
|
+
'zap',
|
|
138
|
+
'zap-off',
|
|
139
|
+
'zoom-in',
|
|
140
|
+
'zoom-out',
|
|
141
|
+
] as const;
|
|
@@ -91,7 +91,11 @@ export const NM_ICON_IDS = [
|
|
|
91
91
|
'rows',
|
|
92
92
|
] as const;
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
import type { NM_EXTENDED_ICON_IDS } from './nm-icons-extended.ts';
|
|
95
|
+
|
|
96
|
+
export type NmCoreIconId = (typeof NM_ICON_IDS)[number];
|
|
97
|
+
/** The core ids above plus the generated lucide ids in nm-icons-extended.ts. */
|
|
98
|
+
export type NmIconId = NmCoreIconId | (typeof NM_EXTENDED_ICON_IDS)[number];
|
|
95
99
|
|
|
96
100
|
export type NmIconSpec = {
|
|
97
101
|
viewBox: string;
|
|
@@ -414,4 +418,4 @@ export const NM_ICONS = {
|
|
|
414
418
|
viewBox: '0 0 20 21',
|
|
415
419
|
fill: 'M19.7499 10.2456C19.7499 9.51343 19.684 8.81284 19.5615 8.13916H10.085V11.9988L15.5427 12C15.3213 13.2842 14.6089 14.3789 13.5174 15.1087V17.6128H16.7661C18.6631 15.869 19.7499 13.2912 19.7499 10.2456ZM13.5185 15.1088C12.6142 15.7146 11.4496 16.069 10.0873 16.069C7.45553 16.069 5.22298 14.3076 4.42345 11.9333H1.07227V14.5158C2.73255 17.7883 6.14497 20.0339 10.0873 20.0339C12.812 20.0339 15.1011 19.1439 16.7673 17.6117L13.5185 15.1088ZM4.10832 10.0175C4.10832 9.35087 4.22018 8.70643 4.42389 8.10058V5.51813H1.07271C0.386221 6.87134 0 8.39883 0 10.0175C0 11.6362 0.387398 13.1637 1.07271 14.5169L4.42389 11.9345C4.22018 11.3286 4.10832 10.6842 4.10832 10.0175ZM10.0873 3.96491C11.5745 3.96491 12.9062 4.47368 13.9577 5.46783L16.8367 2.61052C15.0881 0.992982 12.8085 0 10.0873 0C6.14614 0 2.73255 2.24561 1.07227 5.51812L4.42345 8.10058C5.22298 5.72631 7.45553 3.96491 10.0873 3.96491Z',
|
|
416
420
|
},
|
|
417
|
-
} as const satisfies Partial<Record<
|
|
421
|
+
} as const satisfies Partial<Record<NmCoreIconId, NmIconSpec>>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { defineOrbTheme, type OrbState } from 'orb-ui';
|
|
2
|
+
|
|
3
|
+
export type NmVoiceOrbAgentState =
|
|
4
|
+
| null
|
|
5
|
+
| 'idle'
|
|
6
|
+
| 'connecting'
|
|
7
|
+
| 'listening'
|
|
8
|
+
| 'thinking'
|
|
9
|
+
| 'talking'
|
|
10
|
+
| 'speaking'
|
|
11
|
+
| 'error';
|
|
12
|
+
|
|
13
|
+
export const NM_VOICE_ORB_SIZE = 34;
|
|
14
|
+
|
|
15
|
+
export const NM_VOICE_ORB_CLASSES = {
|
|
16
|
+
root: 'nm-voice-orb',
|
|
17
|
+
} as const;
|
|
18
|
+
|
|
19
|
+
export const NM_ORB_UI_THEME = defineOrbTheme({
|
|
20
|
+
name: 'cloud',
|
|
21
|
+
preset: 'expressive',
|
|
22
|
+
geometry: {
|
|
23
|
+
diameterRatio: 1,
|
|
24
|
+
listeningMinScale: 0.88,
|
|
25
|
+
speakingMaxScale: 1,
|
|
26
|
+
idleDotScale: 0.88,
|
|
27
|
+
},
|
|
28
|
+
motion: {
|
|
29
|
+
entranceHoldMs: 0,
|
|
30
|
+
entranceGrowMs: 160,
|
|
31
|
+
entranceSettleMs: 240,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export function toOrbUiState(agentState: NmVoiceOrbAgentState | undefined): OrbState {
|
|
36
|
+
switch (agentState) {
|
|
37
|
+
case 'talking':
|
|
38
|
+
case 'speaking':
|
|
39
|
+
return 'speaking';
|
|
40
|
+
case 'thinking':
|
|
41
|
+
return 'thinking';
|
|
42
|
+
case 'connecting':
|
|
43
|
+
return 'connecting';
|
|
44
|
+
case 'error':
|
|
45
|
+
return 'error';
|
|
46
|
+
case 'listening':
|
|
47
|
+
default:
|
|
48
|
+
return 'listening';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place NIF reaches for Animate UI. Each part is Animate UI's version of a Base UI primitive: the same API,
|
|
3
|
+
* with Motion built in. NIF components import their primitives from here and never from Animate UI directly, so the
|
|
4
|
+
* motion layer can be swapped by changing this file alone.
|
|
5
|
+
*
|
|
6
|
+
* Animate UI is "MIT + Commons Clause". It may be used in a product, but its components may not be sold or
|
|
7
|
+
* redistributed in their original form. NIF therefore depends on the package and never copies or bundles its code.
|
|
8
|
+
*/
|
|
9
|
+
export { Checkbox } from '@animate-ui/react/primitives/base-ui/checkbox';
|
|
10
|
+
export { Collapsible } from '@animate-ui/react/primitives/base-ui/collapsible';
|
|
11
|
+
export { Combobox } from '@animate-ui/react/primitives/base-ui/combobox';
|
|
12
|
+
export { ContextMenu } from '@animate-ui/react/primitives/base-ui/context-menu';
|
|
13
|
+
export { Dialog } from '@animate-ui/react/primitives/base-ui/dialog';
|
|
14
|
+
export { Menu } from '@animate-ui/react/primitives/base-ui/menu';
|
|
15
|
+
export { Menubar } from '@animate-ui/react/primitives/base-ui/menubar';
|
|
16
|
+
export { Popover } from '@animate-ui/react/primitives/base-ui/popover';
|
|
17
|
+
export { PreviewCard } from '@animate-ui/react/primitives/base-ui/preview-card';
|
|
18
|
+
export { Progress } from '@animate-ui/react/primitives/base-ui/progress';
|
|
19
|
+
export { Radio } from '@animate-ui/react/primitives/base-ui/radio';
|
|
20
|
+
export { RadioGroup } from '@animate-ui/react/primitives/base-ui/radio-group';
|
|
21
|
+
export { Select } from '@animate-ui/react/primitives/base-ui/select';
|
|
22
|
+
export { Slider } from '@animate-ui/react/primitives/base-ui/slider';
|
|
23
|
+
export { Switch } from '@base-ui/react/switch';
|
|
24
|
+
export { Tabs } from '@animate-ui/react/primitives/base-ui/tabs';
|
|
25
|
+
export { Toggle } from '@animate-ui/react/primitives/base-ui/toggle';
|
|
26
|
+
export { Tooltip } from '@animate-ui/react/primitives/base-ui/tooltip';
|
|
27
|
+
export { Button } from '@animate-ui/react/primitives/buttons/button';
|
|
28
|
+
|
|
29
|
+
/** The animated icon engine. Icons follow the hover of the control around them, or animate on their own. */
|
|
30
|
+
export { AnimateIcon, IconWrapper, getVariants, useAnimateIconContext, type IconProps } from '@animate-ui/react/icons';
|
|
@@ -258,6 +258,9 @@
|
|
|
258
258
|
--nm-control-option-inset: calc(var(--nm-control-inset) - var(--nm-menu-pad));
|
|
259
259
|
/* Widths of the floating parts and the narrow content columns. */
|
|
260
260
|
--nm-width-menu: 15rem;
|
|
261
|
+
--nm-width-menu-max: 24rem;
|
|
262
|
+
/* The composer with one line of text: its padding, frame, line, gap and bar. A host reserves this much so the box grows upward. */
|
|
263
|
+
--nm-composer-rest: calc(var(--nm-space-12) * 2 + var(--nm-rule) * 2 + var(--nm-space-24) * 2 + var(--control-h));
|
|
261
264
|
--nm-width-popup-sm: 16rem;
|
|
262
265
|
--nm-width-popup: 18rem;
|
|
263
266
|
--nm-width-tooltip: 20rem;
|
|
@@ -265,6 +268,10 @@
|
|
|
265
268
|
--nm-code-gutter: 3ch;
|
|
266
269
|
--nm-width-date: 11rem;
|
|
267
270
|
--nm-width-dialog: 40rem;
|
|
271
|
+
/* A page column, such as a settings page: a share of the view, never narrower or wider than its bounds. */
|
|
272
|
+
--nm-width-column: 90%;
|
|
273
|
+
--nm-width-column-min: 20rem;
|
|
274
|
+
--nm-width-column-max: 50rem;
|
|
268
275
|
--nm-height-command: 28rem;
|
|
269
276
|
--nm-height-picker: 14rem;
|
|
270
277
|
--nm-height-color: 9rem;
|