Logo
Neura UI
Loading…
Changelog

What's new in Neura Kit

Every release, parsed straight from CHANGELOG.md — features, improvements and fixes as they shipped.
Latest
v2.1.7
Released
Aug 17, 2026
Releases
86
v2.1.7 Latest

Fixed

  • Rule Builder Alpine errors: The rule and group branches were rendered with x-show, which only hides the markup via CSS while Alpine still evaluates both branches' expressions — countConditions(item) on a rule (no children) and item.values.map(...) on a group both threw can't access property Symbol.iterator. Switched both blocks to x-if so only the matching branch is evaluated
v2.1.6

Added

  • Rule Builder single-option fields: When a select / multiselect field has exactly one option, the value is auto-selected on rule creation, on field change, and on operator switch; the value renders as a static pill (no dropdown) for select, and the add-chip button is hidden for multiselect
v2.1.5

Added

  • Rule Builder numeric operators: New greater_than and less_than operators available on number and date fields (in addition to is / is_not / empty / not_empty), with default operator is
  • Rule Builder number / date fields: Two new field types — number renders a numeric input (step="any", decimal-friendly) and date renders a native date picker, both backed by the shared text value editor so values stay untouched in rule.values
  • i18n: EN / FR labels for greaterThan (“is greater than” / « est supĂ©rieur Ă  ») and lessThan (“is less than” / « est infĂ©rieur Ă  »)
v2.1.4

Added

  • Dropzone variants: New variant prop on neura::dropzone — default / solid / card / minimal / cover. Backed by Packs\Dropzone\Variant, PackResolver::dropzoneVariant(), and a neura-kit.dropzone.default.variant config default. Each variant can override the area rounding, shadow, and hide the icon tile (minimal)
  • Select size: size prop on neura::select (xs / sm / md / lg / xl), sharing the Input\Size pack so the trigger matches the neura::input height and padding; options follow the size
  • Filters variants: New variant prop on neura::filters — default / solid / card / minimal. Backed by Packs\Filters\Variant and PackResolver::filtersVariant(); variants control the chip surface, panel surface, and shadow
  • Filters colors: New color prop on neura::filters — primary / secondary / danger / success / warning / info plus any Tailwind color. The tint applies to the add-filter and clear-all buttons only; the active filter chips keep their neutral structural surface
  • Dropzone avatar variant: New avatar variant on neura::dropzone — a circular profile-photo picker. The picked image fills the circle (object-cover), a camera overlay appears on hover, and a small remove button sits on the corner when a photo is set. Text is hidden, the preview list is skipped, and the default icon switches to a camera

Changed

  • Dropzone style: Aligned with the ReUI file-upload look — 1px dashed frame, hover now tints only the border (no background flash), drag shows a soft bg-primary/5 veil (no scale/shadow), and the icon sits in a circular rounded-full bg-muted tile that turns primary while dragging. Transition narrowed to transition-colors
  • Dropzone packs: Packs\Dropzone\Color no longer sets the resting surface (area.base) — surfaces are owned by the variants — and its state classes were recalibrated (border-only hover, primary/5 drag, circular tile states)
v2.1.3

Fixed

  • Navlist stacking: Dropped isolate / unconditional relative on items so Select popups are no longer covered by later nav links
  • Select open state: Root gets z-50 while open so the options panel stacks above following sidebar content
v2.1.2

Added

  • Navlist variants: Item styles default / ghost / soft / rail — set on neura::navlist and inherited by items via @aware (per-item override still works)
  • Navlist group variants: Layout variants default / compact / separated / card (independent from item styles); shared group.label partial

Changed

  • Navlist group: Label accepts a prop or <x-slot:label> for custom content; clearer spacing between groups, labels, and items; default variant no longer draws a left border rail
v2.1.1

Changed

  • Button loading orb: Uses CSS orbVariant (default S3) instead of canvas orbState; drop orbState from the button API
v2.1.0

Added

  • Thinking State: New neura::thinking-state — collapsible “thinking” indicator with optional reasoning steps, progressive reveal, sizes, and Alpine neuraThinkingState
  • Web Search: New neura::web-search — streaming search UI with query label, source list states (pending / loading / done), autoplay / loop, and Alpine neuraWebSearch
  • Todo List: New neura::todo-list — agent-style checklist with pending / active / done statuses, autoplay stepping, collapse, and Alpine neuraTodoList
  • File Diff: New neura::file-diff — compact unified diff card (add / del / ctx rows, file header, +/- counts)
  • Image Generation: New neura::image-generation — generating / done card with prompt, aspect presets, and resolution label
  • Orb CSS engine: Pure-CSS orb variants (Lattice S1–S5, Lens B1–B5, Ring C1–C5, Helix G1–G5, Morph M1–M5) via variant, optional pill / label, backed by OrbCssGeometry and neura::orb.css
  • Button loading orb: loadingIndicator="orb" (or config button.loadingIndicator) replaces the spinner with a CSS orb variant; orbVariant (default S3), orbSize, orbColor with size-aware defaults
  • i18n: EN / FR strings for thinking, web search, todos, file diff, and image generation

Changed

  • Vite plugin imports: Relative TypeScript imports in the config-loaded plugin graph now use explicit .ts extensions for future Vite configLoader: 'native' compatibility
  • Feature loader: Registers lazy Alpine features for thinking-state, web-search, and todo-list
v2.0.16

Added

  • Rule Builder: New neura::rule-builder — nested WHEN / THEN editor with AND/OR groups, locked conditions, multi-select chips, drag-reorder, and If true / If false action branches
  • Rule Builder fields: Same field schema as Filters (select / multiselect / text + operators) for consistent filter/rule configs
  • Rule Builder actions: Configurable THEN actions with typed params (select / text) and live binding via wire:model / x-model / rule-builder-changed
  • Rule Builder packs: Size pack + NeuraKitConfig::ruleBuilder() / PackResolver::ruleBuilderSize(); i18n keys (en/fr) for when/then, combinators, and actions
  • Docs: Atom page + Data nav entry (docs.atoms.rule-builder, premium) with expense-style demo

Fixed

  • Rule Builder rail: Connector used flex-1 bg-edge in a row flex and painted empty grey squares beside AND badges; replaced with a 1px dashed rail
  • Rule Builder Alpine: Nested x-if shells left blank bordered rows; switched primary rule/group toggles to x-show
  • Rule Builder boot: Eager-register neuraRuleBuilder so SPA / first paint no longer throws neuraRuleBuilder is not defined
v2.0.15

Added

  • Emoji Picker: New neura::emoji-picker — native text input with search, categories, recent picks, and insert-at-cursor; variant="button" trigger for composers (for target id, emoji-select event, popupAlign / popupPlacement, closeOnSelect)
  • Emoji data: Bundled category catalog (emoji-data) with localStorage recents; lazy Alpine feature neuraEmojiPicker in the forms chunk
  • Wizard: Compound API with @aware inheritance — set steps, stepProperty, totalSteps, linear, color, and size once on neura::wizard
  • Wizard steps: default / tabs / pills indicators, linear furthest-step locking, keyboard tablist navigation, optional vertical heading / subheading
  • Wizard navigation: Client-only mode (:stepProperty="false"), showCounter, and Alpine fallbacks when no Livewire binding is present
  • Wizard support: Support\Wizard\State for step normalization, size tokens, and shared furthest-step scope keys

Changed

  • Composer: Reworked shell with header / tools / submit / actions slots, primary focus ring, auto-grow textarea, submitOnEnter, and quieter tool-button styling (pairs with emoji-picker button variant)
  • Spotlight manager: Layout and AI response markup refresh for clearer command results and streaming replies
  • Orb: Eager-loaded with the preloader (no longer a lazy widgets chunk) so the boot canvas paints on first frame
  • Feature loader: Boot budget (~800ms) so hung lazy chunks cannot block Livewire/Alpine; late arrivals reinitialise themselves

Fixed

  • Wizard (vertical): Replaced 1fr grid rows with auto so intrinsically sized wizards no longer inflate page height / trigger a second document scrollbar
  • Preloader: maxWait hard cap (default 2.5s) so a hung window load cannot leave the overlay up forever; hides after DOM is interactive + min duration
  • Orb: Synchronous first paint before requestAnimationFrame so the preloader is never a blank canvas on boot
v2.0.14

Added

  • Theme switcher pullcord variant: neura::theme-switcher variant="pullcord" — Verlet hanging-cord toggle; pull past the detent (or click / Enter / Space) to flip light ↔ dark
  • PullCord options: embedded (absolute inside a relative preview), noEntrance, ariaLabel, and physics overrides (gravity, damping, iterations, stretchMax)
  • PullCord CSS vars: Position and ink via --nk-pullcord-top, --nk-pullcord-right, --nk-pullcord-z, --nk-pullcord-ink on any ancestor
  • Theme switch animations: View Transition reveal when toggling light / dark / system — circle, blur-circle, qr-scan, polygon, polygon-gradient, gif, or none (inspired by [react-theme-switch-animation](https://github.com/MinhOmega/react-theme-switch-animation)); ignored for the pullcord variant
  • neura::theme-switcher animation prop: Per-instance animation via data-nk-theme-animation (default circle); works with dropdown, stacked, and inline variants
  • $theme API: Pass a click $event (or element / coordinates) so the reveal originates from the control — $theme.toggle($event), $theme.dark($event), $theme.light($event), $theme.system($event)
  • $theme.configure(): Kit-wide defaults (animationType, duration, easing, blurAmount, gifUrl, …); $theme.animation() reads the active config
  • System preference: When stored theme is system, OS light/dark changes animate through the same View Transition path

Changed

  • JS runtime: Reorganized resources/js/globals/ into features/ (system, overlays, forms, data, media, chart, editor, flow) with a runtime/loader that detects Alpine factories on the page and lazy-loads only what is rendered
  • Vite chunks: Collapses lazy features into five named bundles — neura-forms, neura-widgets, neura-overlays, neura-editor, neura-flow — instead of one tiny file per component
  • Eager surface: Theme, toast, clipboard, translations, icons, preloader, and the @neuraKit overlay managers (modal / sideover / spotlight) stay in the entry chunk
  • Editor: Replaced Tiptap and Editor.js with the kit’s dependency-free native editor (neura::editor / nativeEditor) — A4 pages, toolbar, uploads, and optional Paperdoc export/import
  • Chart: Replaced Chart.js with the kit’s dependency-free native chart (neura::chart / chartComponent) — line, bar, pie, and doughnut on canvas
  • Plugin entry: resources/js/index.ts exports the Vite plugin and presets only — it no longer side-imports the browser runtime (avoids window is not defined when Vite loads the config)

Removed

  • Lottie: neura::lottie component and lottie-web integration removed
  • Tiptap: Editor variant, Blade views, and related JS removed
  • Editor.js: Editor variant, Blade views, editorjs theme CSS, and related JS removed
  • Chart.js: Chart.js adapter and third-party chart dependency removed

Fixed

  • Boot race: Top-level await boot() does not delay DOMContentLoaded; Livewire’s classic script would start Alpine before feature factories registered. Livewire.start is now wrapped so Alpine walks the DOM only after needed chunks have loaded
  • Late SPA features: Feature modules register via onAlpineInit so factories still attach after Alpine has already started (e.g. Livewire navigate)
  • Color picker: Removed $wire from the Alpine data object — JSON.stringify of the Alpine scope was hitting Livewire’s $wire proxy and requesting a non-existent toJSON component method
v2.0.13

Added

  • Contribution Graph: New neura::contribution-graph GitHub-style year heatmap (data as Y-m-d => count or { date, count }), with month / weekday labels, Less→More legend, color (green / primary / emerald), size (sm / md / lg), from / to, custom thresholds, and ContributionGraphBuilder
  • Preloader: New neura::preloader full-page boot overlay with brand, orb or spinner indicator, optional auto-dismiss after window load, and manual NeuraKitPreloader.show() / hide() control
  • File Manager sortable: Drag to reorder siblings or drop onto a folder to move; sortable prop (default true), sort="manual" for custom order, and file-manager:reorder / file-manager:move events
  • i18n: Contribution graph strings (total / per-day tooltips, weekday labels, Less / More) and file manager manual-order / moved / reordered labels (EN + FR)

Improved

  • File Manager (grid): Folder drop targets treat most of the tile as inside (thin left/right edges only for sibling reorder), matching Finder / Explorer icon-view behaviour

Changed

  • Support layout: ContributionGraphBuilder → Support/ContributionGraph/; ChunkedTemporaryFile → Support/Dropzone/ (namespaces updated accordingly)
v2.0.12

Added

  • File Manager: New neura::file-manager browser with list / grid views, breadcrumbs, local or remote search (folder or whole-tree scope), selection, details panel, upload / create / download / delete / rename affordances, and size / color / rounded / shadow packs
  • Dropzone packs: Size and color packs (Packs\Dropzone) plus PackResolver::dropzoneSize() / dropzoneColor() so dropzone density and ink follow config
  • Dropzone previews: Split list (dropzone.item) and grid (dropzone.tile) partials with previewMode (list / grid; grid by default for multiple image uploads)
  • i18n: English and French strings for file manager and dropzone (upload status, ETA, empty folder, search scope, selection, sort / view labels, …)

Improved

  • Dropzone: Reworked Alpine controller — chunked upload with retry, concurrency, cancel / retry actions, duplicate / empty / max-files guards, progress + ETA messaging, and clearer accept / max-files hints
  • Layout header: Tighter mobile padding and gaps, min-w-0 / overflow handling so brand and actions no longer crowd the bar
  • Sidebar toggle: Resolves toggle() from the nearest [data-slot=layout] Alpine scope (works when the button is outside the layout x-data), with type="button" and aria-label
  • Tokens: Lighter --nk-surface-inset and stronger --nk-separator so recessed panels stay bright while hairline dividers remain readable on white

Fixed

  • Layout main: Dropped max-h-screen so nested scroll regions (e.g. docs) are not clipped to the viewport
  • Sidebar: Uses min-h-0 h-full instead of min-h-[calc(100vh-var(--header-height))] for correct flex height inside the layout grid
  • Layout data attributes: data-in-mobile / data-in-tablet / data-collapsed / data-sidebar-open bind to null when false so CSS attribute selectors match only active states
v2.0.11

Added

  • Orb: New neura::orb canvas “thinking” indicator with six states (working, searching, solving, listening, composing, shaping), configurable size / speed, and a semantic color prop (foreground, primary, success, danger, …) driven by currentColor so ink follows light and dark themes live
  • Icon set (Neura): First-party SVG icon set (neura::icons.*) with line / fill variants, optional set="neura", and auto-resolve when the name is unique to Neura
  • Icon animations: Presets via animate + trigger (spin, pulse, ring, float, blink, beat, bounce, nudge, open, wiggle, shake, pop, swing, draw) with loop / hover / once triggers; draw-on plays once when the icon enters the viewport (NeuraKitIcons)
  • Icon stack: New neura::icon-stack isometric stacked-panel frame with size and color packs for decorative empty states
  • Event calendar: New neura::event-calendar with month / week / day / agenda views, mini calendar, configurable hours, and size / rounded / shadow packs

Improved

  • Orb: Theme switches update ink every frame (no longer stuck on the color read at init)
  • Icons: Animation CSS gated with data-play / triggers so draw-on and loop presets behave predictably across builds
v2.0.7

Added

  • Filters: New neura::filters component for building multi-condition filter bars (select, multiselect, and text fields with operators, search, and clear-all)
  • Select actions & panels: neura::select.action, neura::select.panel, and neura::select.option-action for trigger actions, nested option panels, and per-option actions
  • Select options: Prefix / suffix slots on options for icons and inline actions
  • Calendar: Multi-month layout (months), caption dropdowns, date presets, per-day labels, event markers, and optional Today / Reset controls (showToday, showReset)
  • Spotlight AI: SpotlightAiContext helper for streaming replies, suggesting actions, and building chat messages from query history
  • PackResolver: roundedToken(), roundedSides(), otpInputRounded(), and otpGroupRounded() — complete Tailwind class literals for directional / OTP rounding
  • i18n: English and French strings for filter operators (is, contains, startsWith, …), today, reset, clearAll, and selectedCount

Improved

  • Calendar: Loading skeletons for presets and grid while data settles; clearer Today / Reset and preset affordances
  • Select (multiple): Keeps the search query after each pick so users can continue filtering without retyping
  • Select trigger: Server-rendered placeholder text and muted styling until a value is selected (avoids empty flash before Alpine hydrates)

Fixed

  • Autocomplete: No longer opens with the full unfiltered list during the debounce window — filters (or closes) before showing results
  • Input: wire: / x- bindings stay on the inner <input> instead of being merged onto the wrapper
  • OTP: Rounded corners on first/last cells and separator neighbors resolve via PackResolver (Tailwind-scannable classes)
  • Phone input: Country selector and number field use full rounded token + rounded-*-none instead of brittle string replacement on the class name
v2.0.6

Fixed

  • Select / Input / Textarea: rounded and shadow now read from config/neura-kit.php via PackResolver — previously hardcoded so global style.rounded / style.shadow were ignored
  • Card / Dropdown / Modal: same fix for rounded and shadow defaults (card, dropdown, modal-manager included)
  • Tags input / Phone input / Color picker / Checkbox: form controls now inherit input or component config for rounded and shadow
  • Avatar / Popup / OTP: rounded and shadow now read from component config (avatar, popup, otp)
  • Button: shadow now reads from config (global by default); ghost/soft variants stay flat
  • Select options: tighter checkbox-to-label spacing (2-column layout, smaller checkbox, reduced padding/gap)
  • Autocomplete / Calendar / Rich Editor / Dropzone / Fieldset: rounded and shadow now read from config (popup, rich-editor, dropzone, fieldset, or input aliases)
  • Phone / Tags / Color picker popups, Input prefix/suffix, Switch thumb, Radio cards/segmented: wired to popup, input, or toggle config
  • Alert / Callout / Toast / Dialog / Empty State / Sideover: rounded and shadow now read from component config; Popover uses popup config; Progress bar radius reads from progress config (default full)
  • Skeleton / Lottie: skeleton rounded reads from config for button, card, and image variants (circles stay full); lottie SVG drop-shadow reads from lottie config
  • Table / Chart / Tree / Flow / Kanban / Image Gallery / Tabs: rounded and shadow now read from component config; table defaults inherit global style; table relation-count popover uses popup config
  • Badge: removed hardcoded md fallback — uses config default (global)
  • Command / Spotlight / Composer / Context Menu: rounded and shadow now read from component config; Context Menu aliases dropdown config; Button hardcoded lg rounded fallback removed
  • Badge / Alert / Navlist / Avatar config: default rounded (and shadow for avatar) is now global instead of a fixed size
  • Input / Card / Dropdown config: default shadow is now global (inherits style.shadow) instead of a fixed value
v2.0.5

Added

  • Wizard navigation: cancelVariant, previousVariant, nextVariant, finishVariant, and completeVariant props to customize button styles (ghost, soft, outline, primary, primary-soft, etc.)
v2.0.4

Fixed

  • Wizard: Replaced Alpine x-if with x-show on wizard.steps and wizard.navigation, and added wire:ignore — prevents duplicated back buttons and step checkmarks after Livewire re-renders (e.g. clicking Continue)
v2.0.3

Fixed

  • Table (Livewire): variant(), rounded(), shadow(), and density() now read defaults from config/neura-kit.php via PackResolver::componentDefault() — previously hardcoded to default / xl / sm / normal, so global table config (e.g. variant => minimal) was ignored
v2.0.2

Added

  • Dynamic style packs for components previously hardcoded outside config/neura-kit.php:
  • PackResolver helpers: navlistSize, navlistColor, navlistVariant, navbarItem, tabsVariant, linkVariant, calloutColor, tablePack
  • Global helpers: neura_navlist_size, neura_navlist_color, neura_tabs_variant, neura_callout_color

Changed

  • Navlist, navbar, tabs, link, and callout Blade views now resolve styles from config packs and neura_config() defaults
  • Wizard step colors default from neura-kit.wizard config
v2.0.1

Fixed

  • Error component: Slot content (e.g. <neura::error>Message</neura::error>) now renders inside the error wrapper with red styling and data-slot="error" — previously only name and messages props triggered display, so field documentation examples showed no styled error text
v2.0.0

Removed

  • License system: Removed activation flow, license API client, neura-kit:activate, neura-kit:license:status, and related helpers (neura_license, neura_is_activated)
  • Dependencies: Removed unused lorisleiva/laravel-actions requirement

Changed

  • Distribution: Package is open source (MIT); composer.json license aligned with LICENSE
  • Boot: Neura Kit always boots fully without license checks or first-party bypass
  • Install: neura-kit:install and neura-kit:install-dependencies no longer require or mention license activation

Added

  • Neura\Kit\Support\Security\SafeUrlValidator, UploadMimeValidator, LivewireMethodName
  • Editor.js toast bridge (notifier-bridge.ts) routing notifications to NeuraKitToast

Fixed

  • Editor.js: Upload/error notifications now use Neura Kit toasts instead of native Editor.js notifier styling
  • Editor.js: Fixed 401 on image upload when used on public pages (docs) — route middleware defaults to web instead of web,auth; fetch sends session cookies (credentials: 'same-origin')
  • Editor.js: Invalid image blocks from failed uploads are stripped on load to prevent "Block image skipped" errors

Security

  • Routes: Upload and editor utility routes use configurable middleware + throttle (NEURA_KIT_ROUTE_MIDDLEWARE, default web; set web,auth when routes must require authentication)
  • Editor.js: Remote image download disabled by default (NEURA_KIT_EDITOR_ALLOW_REMOTE_IMAGES); SSRF protections via SafeUrlValidator and HTTP client when enabled
  • Chunk uploads: Optional server-side MIME allowlist (NEURA_KIT_UPLOAD_ALLOWED_MIMES) validated per chunk and on assembled files
  • XSS: Select option labels and tags-input suffix now escaped; Spotlight AI markdown output sanitized (HTML escape + safe link URLs)
  • Clipboard: Livewire callback method names validated before JS injection
  • Image storage: Filename extension derived from detected MIME instead of client extension only
v1.1.17

Added

  • Laravel 13 support: Added ^13.0 constraint for illuminate/support and illuminate/view
  • orchestra/testbench: Added ^11.0 constraint for Laravel 13 compatibility
v1.1.16

Fixed

  • ActivateCommand: License key not found despite being set in .env
  • ActivationClient: Same getenv() fix for NEURA_LICENSE_TOKEN, COMPOSER_HOME, HOME, and COMPOSER_AUTH
  • DomainDetector: Same getenv() fix for NEURA_KIT_DOMAINS
v1.1.15

Improved

  • Clipboard: Focus-trap-aware fallback so copy works inside sideovers and modals
  • ClipboardCall (PHP): Single uniform API for all copy use cases

Fixed

  • Clipboard: Copy in sideovers no longer fails when Clipboard API is unavailable or user activation has expired — fallback now runs inside the dialog container so focus trap allows the copy to succeed
v1.1.14

Fixed

  • Table: Bulk actions dropdown and bulk selection banner now react correctly to row selection
v1.1.13

Improved

  • Design tokens: Coherent semantic color system
  • Divider: Uses bg-edge instead of bg-surface-inset for horizontal/vertical lines so divider color matches navlist timeline
  • Timeline: Vertical and horizontal variants use bg-edge instead of bg-surface-inset for consistent line color with navlist and divider
  • Editor (Tiptap toolbar): Vertical separators between icon groups use bg-edge instead of bg-surface-inset for visual consistency
v1.1.12

Improved

  • Layout: Header, main, and layout variants now use array-based class binding with $attributes->class()
v1.1.11

Improved

  • Blade components: All neura view components now use $attributes->merge(['class' => '...']) instead of $attributes->class([...])
v1.1.10

Added

  • Kanban: Card click handler via onCardClick prop
v1.1.9

Added

  • Layout: Theme variants via theme prop
  • Layout: Accent color customization via accentColor prop

Improved

  • Design tokens: Dark mode darker and opaque
  • Table: Variant pack uses semantic design tokens
  • Layout: Main content area uses bg-surface for consistent theming
  • Layout: Header adapts to all themes (contrast, muted, accent)
  • Layout: Simplified accent color system

Fixed

  • Layout: CSS cascade issue with theme token overrides
  • Layout: Muted theme dark mode text colors
v1.1.8

Fixed

  • Table: Dark mode backgrounds now opaque

Added

  • Table: Full-height mode via fullHeight() method
v1.1.7

Fixed

  • Table: Column visibility and bulk action dropdowns no longer clipped by table container
  • Dropdown: handleFocusInOut guarded with !this.open and null checks on $refs to prevent Alpine errors

Added

  • Table: Borderless mode via bordered() method
v1.1.6

Improved

  • Chart: Modern UI aligned with neura-kit design system
  • Flow: Node drag-to-move and edge recalculation
v1.1.5

Added

  • Table Style Packs: Composable design tokens for table appearance
  • Table Enums: Type-safe style configuration via Neura\Kit\Enum\Table\*

Improved

  • Table Structure: Modular sub-components in table/parts/
v1.1.4

Improved

  • Translations API: Efficient cache lifetimes and ETag support
  • Build: Vendor chunk splitting for better browser caching
v1.1.3

Improved

  • Dropdown: Panel and items aligned with neura-kit design system
  • Dropdown submenu: Same styling as main dropdown; trigger and chevron use design tokens
  • Context menu: Matching panel borders/shadows, item text size and colors, separator styling
v1.1.2

Fixed

  • Table: Columns no longer overflow the container when there are many columns
v1.1.1

Improved

  • Card: Border and shadow refinements
  • Sidebar Toggle: Twenty CRM–style and behavior

Removed

  • Card: bordered variant removed to simplify API; use default or outline instead. Existing variant="bordered" falls back to default styling.
v1.1.0

Added

  • Table Inline Editing: Editable columns for inline data modification (inspired by Twenty CRM)
  • Flow Connectable Nodes: Interactive edge creation via click-to-connect handles
  • Navlist: New label and separator subcomponents
  • Sideover: Header, footer, body, and close subcomponents

Improved

  • Theme: Fixed flash of dark mode (FOUC) on page refresh in light mode
  • Sideover: Multiple improvements
  • Flow Component: Visual overhaul for light and dark modes
  • Spotlight / Command Priority: Keyboard shortcut conflict resolution
  • Component Styling: Broad UI refinements across 100+ component views

Fixed

  • Theme: Browser color-scheme now set immediately, preventing native dark scrollbars/backgrounds flash
  • Sideover: Enter transition now works reliably (DOM renders before animation starts)
  • Spotlight + Command: Both no longer open simultaneously on Ctrl+K when a command palette is present
  • Table: Fixed @js() parse error in Blade (replaced with Js::from())
v1.0.48

Added

  • Sideover: Full sideover (drawer) panel system
  • Flow: Alpine Flow integration for workflow/flowchart UI

Fixed

  • SideoverManager: Width override now properly recalculates widthClass when width attribute is passed at open time
  • ActivateCommand: Added error logging on unexpected activation failures

Improved

  • EditorJS theme: Refactored inline color overrides to Tailwind @apply directives
v1.0.47

Improved

  • Table: Notion/Twenty-style UI overhaul
  • Table Columns: Enhanced default column with dash placeholder, alignment, truncate, and hover-copyable support
  • Table Actions: Color variants now properly applied (primary, danger, success, warning, info, ghost, secondary)
  • Popover: Improved hover behavior and UI
  • Popup: Enhanced visual styling
v1.0.46

Improved

  • Spotlight: Modes are now dynamic — only modes with registered providers/commands are shown
  • Clipboard: Enhanced module with better reliability and feedback
v1.0.45

Added

  • Spotlight: AI providers system for streaming AI responses
  • Spotlight: Search providers system for custom search sources
  • Spotlight: make:spotlight artisan command to generate commands, search providers and AI providers
  • Spotlight: SpotlightConfig configuration class with full panel customization
  • Spotlight: SpotlightResult factory methods — url(), action(), event(), livewire(), command(), copy(), modal(), javascript()
  • Spotlight: Enums for SpotlightActionType, SpotlightGroup, SpotlightMode
  • Spotlight: SpotlightCommand enhanced with matches(), getMatchScore(), toResult(), group/icon/shortcut support
  • Spotlight: SpotlightCall fluent API — search(), command(), ai(), placeholder(), query(), open(), toggle(), close()

Improved

  • Spotlight: TypeScript rewrite with typed interfaces and icon SVG map
  • Spotlight: Grouped results with groupedResults computed property
  • Updated translations (en/fr) with all spotlight-related strings
v1.0.44

Fixed

  • Spotlight: Fixed mode not switching when using open({ mode: 'command' }) or open({ mode: 'ai' })
v1.0.43

Added

  • Spotlight: New command palette and search component with multiple modes

Fixed

  • Spotlight: Mode no longer resets when toggling with keyboard shortcuts
v1.0.42

Improved

  • Clipboard: Enhanced Alpine integration and reliability
v1.0.41

Improved

  • Dropdown Submenu: Complete redesign for better UX
  • Dropdown Menu: Custom class merging now works properly
v1.0.40

Fixed

  • Clipboard: Fixed copy not working on Mac/Safari
v1.0.39

Fixed

  • Badge Component: Fixed Tailwind colors not working (red, orange, amber, yellow, lime, green, etc.)
v1.0.38

Fixed

  • Separator Component: Fixed class merging not working properly
v1.0.37

Fixed

  • Phone Input: Enhanced fix for dial code duplication during typing
v1.0.36

Fixed

  • Phone Input: Complete fix for dial code duplication bug
v1.0.35

Fixed

  • License Service: Fixed excessive "Token refresh failed" log spam
v1.0.34

Fixed

  • Phone Input: Fixed dial code duplication bug causing infinite sync loop with Livewire
v1.0.33

Fixed

  • Tree Component: Fixed window is not defined error during Vite build
v1.0.32

Fixed

  • Tree Component: Fixed neuraTree is not defined error when using tree component in modals

Changed

  • Tree Component: Improved TypeScript types for tree component
v1.0.31

Fixed

  • ModalManager: Fixed closeModal() not properly going back to previous modal in stack

Added

  • ModalComponent: Added goBack() method for clearer semantics when navigating modal stack
  • JavaScript: Added NeuraKitModal.goBack() method
v1.0.30

Changed

  • Structure: Improved organization of dropzone-related classes
v1.0.29

Changed

  • Structure: Moved WithDropzone trait from src/Traits/ to src/Concerns/ to follow project conventions

Added

  • WithDropzone Trait: New trait for Livewire components to simplify dropzone file handling
  • DropzoneFiles Collection: New collection class extending Laravel Collection
  • ChunkedTemporaryFile: Improved helper methods
v1.0.28

Fixed

  • Dropzone Component: Fixed Livewire validation error state not displaying correctly

Changed

  • Dropzone Component: Improved error state styling architecture

Added

  • Translations: Added French translations for dropzone component

Technical

  • Refactored dropzone template to use @class Blade directive for conditional classes
  • Added $isInvalid computed variable in Blade for cleaner error detection
  • Simplified JavaScript validation sync logic
  • Removed debug logging from production code
v1.0.27

Fixed

  • Dropzone Component: Fixed validation error state not updating reactively

Changed

  • Dropzone Component: Internationalization improvements

Technical

  • Refactored invalid property to use getter pattern for reactivity
  • Added _invalid private property to store initial validation state
  • Improved error message extraction with translation support
  • Fixed operator precedence issue with || and ?? operators
v1.0.26

Changed

  • Dropzone Component: Complete UI modernization with improved validation error display

Fixed

  • Dropzone Component: Complete fix for validation error display
v1.0.25

Added

  • Tree View Component: Modern, minimalist hierarchical tree component inspired by Notion and shadcn/ui

Fixed

  • Alpine.js initialization issues with proper event listener registration
  • Dropzone Component: Error state styling now properly displays when validation fails
v1.0.24

Added

  • Spinner Component: New loading spinner component with multiple variants and styles
  • Progress Component: New progress bar component for showing completion status
v1.0.23

Fixed

  • Select Component: Fixed default value not being detected when passed as HTML attribute
v1.0.22

Fixed

  • Select Component: Fixed bug when adding custom classes
v1.0.21

Added

  • Select Component: Added value prop for default option selection
v1.0.20

Added

  • Card Component: Enhanced with multiple variants and styling options
v1.0.19

Changed

  • Modal: Refactored Modal classes for better maintainability
v1.0.18

Fixed

  • Modal Manager: Fixed attribute priority logic for maxWidth and maxWidthClass

Changed

  • ModalCall: Auto-sync maxWidthClass when using maxWidth() method
v1.0.17

Fixed

  • Modal Component: Replaced responsive maxWidth classes with simple fixed classes
  • Modal: Fixed maxWidth prop handling for custom values
v1.0.16

Fixed

  • Modal Manager: Fixed maxWidth handling to support both predefined sizes and custom values

Added

  • Phone Input: National prefix handling for phone validation
v1.0.15

Added

  • Phone Input: New comprehensive phone number input component
v1.0.14

Added

  • Wizard Steps: Added size prop for default variant
  • Wizard Steps: Added color prop for customizable step colors

Changed

  • Wizard Steps: Improved default variant UI
v1.0.13

Added

  • Wizard Navigation: Added complete step button support
v1.0.12

Fixed

  • Color Picker: Fixed Livewire wire:model binding not working
v1.0.11

Added

  • Modal Manager: Added nested modals support with stack navigation

Changed

  • Modal Manager: Improved transition animations
v1.0.10

Fixed

  • Color Picker: Fixed Alpine.js error "$disabled is not defined"
v1.0.9

Fixed

  • Select Component: Fixed click-away behavior not closing the dropdown
  • Color Picker: Fixed click-away behavior not closing the popup
v1.0.8

Added

  • Empty State Component: New component for displaying helpful messages when there's no content
v1.0.7

Fixed

  • Context Menu: Complete refactoring with Singleton Manager pattern
  • Color Picker: Improved menu behavior

Changed

  • Context Menu Architecture: Refactored to use ContextMenuManager singleton
v1.0.6

Changed

  • Enhanced Popover Styling: Improved ce-popover with modern Notion-style design

Added

  • EditorJS Notion-style Theme: Complete redesign of EditorJS with Notion-inspired styling
  • Dark Mode Support: Full dark mode support for EditorJS
  • Enhanced Editor Container: Improved editor wrapper styling

Fixed

  • Inline Toolbar Dot Issue: Fixed unwanted dot/bullet appearing in ce-inline-toolbar by default
  • Editor.js Synchronization: Fixed "There is no block at index" error by clearing editor before rendering new content
  • Image Upload Reliability: Major improvements to handle intermittent failures
  • Upload Logging: Comprehensive logging in EditorImageController and ImageStorageService
  • HTTP Headers: Added Accept: application/json header to ensure JSON responses
  • Editor Initialization: Added onReady callback for better initialization tracking

Changed

  • Editor.js now clears content before rendering to prevent block index conflicts
  • Image uploader validates files before sending to server
  • Error handling improved with more descriptive messages and proper error classification
  • Upload process now includes automatic retries for transient failures
  • File storage includes directory creation and permission checks
v1.0.5

Added

  • Editor Multi-Variant System: Modular architecture to support multiple editor types
  • Editor.js Variant: Block-styled editor with structured JSON output
  • Tiptap Variant: WYSIWYG editor with HTML output
  • Editor.js dependencies added to InstallDependenciesCommand.php
  • Complete editor documentation with examples of both variants

Changed

  • Editor Component: Complete refactoring to support variants
  • ChunkController: Renamed from ChunkUploadController for simplification
  • Services Architecture: Clear separation of responsibilities
  • Tests refactored to use controllers instead of Laravel Actions
  • ToastServiceTest and LicenseValidatorTest fixed and all tests passing

Removed

  • Obsolete files: button.blade.php and toolbar.blade.php at editor/ root
  • Old controllers renamed for consistency

Fixed

  • TypeScript errors in editorjs.ts: Replaced EditorJS (namespace) with EditorJSInstance (type)
  • Editor.js toolbox now visible with appropriate CSS styles
  • Signing secret configuration in license tests
  • add() method replaced with flash() in ToastService
  • All unit and feature tests passing (50 tests, 178 assertions)

Security

  • Strict MIME type validation for images (jpeg, png, gif, webp, svg)
  • Configurable maximum size for image uploads
  • URL sanitization for metadata fetching
  • Storage disk existence verification before upload
v1.0.4

Added

  • Chunk Upload System: Integrated and secure chunk upload system
  • Enhanced Alert component with 13 color variants (blue, green, yellow, orange, red, purple, pink, teal, neutral)
  • New Color Variants section in Alert documentation with visual examples
  • Advanced Color Usage examples in Alert documentation
  • Comprehensive Color & Type Reference table in Alert documentation
  • New merge utility for Tailwind class merging
  • Color Picker documentation completely rewritten (Tailwind palette, token/hex/rgb input, Livewire/Alpine examples, hex normalization)

Changed

  • Dropzone: Automatic integration with chunk upload system
  • TestCase: Improved test configuration (encryption key, automatic route loading)
  • Alert component now supports both type (legacy) and color props for better flexibility
  • Improved Alert documentation with expanded property descriptions
  • Updated autocomplete component to use attribute merging instead of class binding
  • Enhanced autocomplete options UI with better visual feedback and spacing
  • Improved empty state design in autocomplete with proper icon component
  • Popup component UI updated to match Notion/shadcn style (rounded-xl, shadow-xl, modern padding, smooth transitions)
  • Popup now uses merge utility instead of class for class merging

Input

  • Improved input component structure and slot support
  • Added extra-slot support for advanced customization
  • Refactored input options (button, clearable, copyable, revealable) for better composability
  • Unified border, focus, and invalid state styles for all input-like components

Checkbox, Radio & Switch

  • Unified border, background, and focus ring colors to match Input component style
  • Improved focus and checked states for better accessibility and visual consistency
  • Refactored Radio and Checkbox components to use PackResolver for dynamic theming
  • Switch component now uses the same color pack logic as Input, Checkbox, and Radio for track and thumb
  • Improved Switch accessibility and keyboard support
  • Updated Switch, Checkbox, and Radio to have consistent active, hover, and disabled states in both light and dark mode

OTP (One-Time Password)

  • OTP input fields now use the same border, focus, and invalid styles as main input fields
  • Improved error display and accessibility for OTP input
  • Unified transition and background for OTP fields in all themes

Avatar & Badge

  • Avatar badge now uses PackResolver::badgeColor and badgeSize for unified color and sizing logic
  • Fixed avatar badge to always be small and fully rounded for consistent appearance
  • Avatar badge rendering now matches badge component logic for color, variant, and size
  • Fixed TypeErrors for badgeColor and badgeSize argument types in avatar component
  • Improved badge positioning and appearance for avatar

Fixed

  • Documentation inconsistencies in Alert component examples
  • Minor styling issues in autocomplete dropdown options
  • Fixed border/focus inconsistencies between input, checkbox, radio, switch, and OTP fields
  • Improved error and invalid state handling for all form components
  • Fixed parse errors and TypeErrors in avatar component after refactor
  • Ensured all badge and avatar logic uses correct argument types and defaults
  • Color Picker refactor: logic extracted to global TypeScript, UI aligned with Input/Popup, dynamic placeholder, systematic hex normalization (token/hex/rgb), wire:model/x-model support

Security

  • Protection against directory traversal in filenames
  • Automatic filename sanitization (special characters, max length 255)
  • Strict file size validation
  • Secure storage in Livewire temporary folder
v1.0.0

Added

  • Initial release of Neura Kit component library
  • All atoms components migrated from main project
  • Service provider for automatic component registration
  • Configuration file for customization
  • Publishing support for views and config
  • 60+ UI components including forms, layout, feedback, navigation, data, and display components
  • Modal system with ModalComponent base class
  • Toast notification system
  • Dialog confirmation system
  • Theme management with dark mode support
  • Vite plugin integration
  • JavaScript API for modals, toasts, and dialogs
  • Artisan commands for modal creation and dependency installation