Leaning further into Atomic’s design ethos: zero-cost primitives, sharp utilities, and predictably reactive behavior. This release builds on what was already working, just sharper, cleaner, and more ergonomic.
Added
- feat: New Atomic util
$.isArr
to verify a provided value is an array (type guarded) - feat: New Atomic util
$.isBool
to verify a provided value is a boolean (type guarded) - feat: New Atomic util
$.isDate
to verify a provided value is a valid Date instance (type guarded) - feat: New Atomic util
$.isFn
to verify a provided value is a function (type guarded) - feat: New Atomic util
$.isInt
to verify a provided value is an integer (type guarded) - feat: New Atomic util
$.isNum
to verify a provided value is a finite number (type guarded) - feat: New Atomic util
$.isObj
to verify a provided value is a plain object (type guarded) - feat: New Atomic util
$.isStr
to verify a provided value is a string (type guarded)
if ($.isArr(data.items)) {
console.log('Array length:', data.items.length);
}
if ($.isStr(user.name)) {
el.textContent = user.name.toUpperCase();
}
- feat: Atomic Global store (accessible through
$.storeGet
and$.storeSet
) now retrieves data from localStorage on initialization using"$tfs:..."
as the key prefix - feat: Atomic Global store
$.storeSet
can now be passed{persist: true}
to persist to localStorage - feat: Atomic Global store now exposes a
$.storeDel
method to remove a key from memory and localStorage. On delete we will also publish a relay event in the same way that$.storeSet
does
$.storeSet('theme', 'dark', { persist: true }); // persisted to localStorage
const theme = $.storeGet('theme'); // returns "dark"
$.storeDel('theme'); // removes from memory and localStorage
Improved
- qol: It is now also possible to pass a string and object to
data.$set
for leaf-specific updates.
<Script>{({data}) => {
data.$bind('form.name', 'input[name="name"]');
data.$bind('form.lastName', 'input[name="lastName"]');
data.$set('form', {name: 'Peter', lastName: 'V'});
...
}}</Script>
Fixed
- Fixed an issue with reactive data proxy not updating radio input types correctly
Atomic keeps getting tighter. No magic, no overhead — just state, DOM, and data doing what they're told.
More to come, but for now, as always, stay frosty ❄️.