All notable changes to the Ty web components library will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
COMPONENT_GUIDE.md - Comprehensive guide for building Web Components with ty.shim
defstyles macroCODE_SPLITTING.md - Guide for shadow-cljs code splitting
CLJS_GUIDE.cljs - Interactive ClojureScript examples for REPL exploration
ty.context namespace - Restored for calendar component locale support
*locale* dynamic var for locale bindingLanding README completely rewritten
ty.router API documentation (using link, navigate!, rendered?)ty.i18n examples with ty.i18n.number and ty.i18n.time namespacesty.shimpackages/cljs/README.md updated
ty.shim(.. % -detail -value)Fixed cljdoc-analyzer failure - ty.components.core namespace not found
ty/core.cljs from src/ty/ to components/ty/Fixed deps.edn paths
:ty-lib alias path from "src/clj" to "src""components" to :dev alias extra-pathsAdded missing dependency
dev.gersak/timing {:mvn/version "0.7.0"} to :dev aliasThis is a major milestone release that represents a complete rewrite of the Ty component library in TypeScript while maintaining the powerful ClojureScript infrastructure for advanced features.
packages/core/src/components/
button.ts - Button component with flavor and size variantscalendar.ts - Full calendar orchestration with year/month/day navigationcalendar-month.ts - Month view component with custom day renderingcalendar-navigation.ts - Calendar navigation controlscheckbox.ts - Checkbox form controlcopy.ts - Copy-to-clipboard componentdate-picker.ts - Date picker with calendar integrationdropdown.ts - Desktop and mobile dropdown with searchicon.ts - Icon component with registry supportinput.ts - Text input with formatting and validationmodal.ts - Modal dialog with backdrop and focus trappingmultiselect.ts - Multi-selection dropdown with tagsoption.ts - Option component for dropdownspopup.ts - Popup positioning componenttab.ts - Individual tab component (NEW in this release!)tabs.ts - Tab container component (NEW in this release!)tag.ts - Tag/badge component for multiselecttextarea.ts - Multi-line text inputtooltip.ts - Tooltip componentNew TyComponent base class (packages/core/src/base/ty-component.ts)
not-searchable, not-clearable)PropertyManager utility (packages/core/src/utils/property-manager.ts)
Icon registry (packages/core/src/utils/icon-registry.ts)
window.ty API for easy integrationwindow.ty API for script tag usage:
window.ty.icons.register({ iconName: '<svg>...</svg>' })
window.ty.icons.get('iconName')
window.ty.icons.has('iconName')
window.ty.icons.list()
window.ty.version // '0.2.0'
vite.config.ts - Main build configurationvite.config.dev.ts - Development server (port 3000)vite.config.cdn.ts - CDN build optimizationUpdated React example (examples/react-nextjs/)
New icons example page showing icon registration patterns
Updated Reagent example (examples/reagent/)
Updated HTMX-Flask example with new icon loading
packages/cljs/ structure with organized component wrappers
Migrated from ClojureScript to TypeScript for all UI components
packages/core/src/ instead of lib/ty/components/Dropdown component major improvements
Multiselect component refactored
Calendar component enhancements
Dropdown styling improvements
Tabs component styling (TABS_STYLING.md documentation)
Before (v0.1.x - ClojureScript):
(ns my-app
(:require [ty.components.button :as button]))
After (v0.2.0 - TypeScript):
import { TyButton } from '@gersak/ty'
// or
import '@gersak/ty/css/ty.css'
Before: Icons were built-in and automatically available
After: Icons must be registered explicitly:
import { check, heart } from '@gersak/ty/icons/lucide'
import { registerIcons } from '@gersak/ty/icons/registry'
registerIcons({ check, heart })
OR using the global API:
<script>
window.ty.icons.register({
'check': '<svg>...</svg>',
'heart': '<svg>...</svg>'
})
</script>
Some components now use TyComponent base class with unified property handling:
not-searchable) are supportedpackages/core/packages/cljs/package.json removed (monorepo structure)BUILDING_WITH_TYCOMPONENT.md - Comprehensive guide for building components with TyComponent base classCSS_GUIDE.md - Ty CSS system usage guide (TY for colors, Tailwind for everything else)TYPESCRIPT_DEV_GUIDE.md - Development workflow for TypeScript componentsPROJECT_SUMMARY.md - Updated with TypeScript architecture detailspackages/cljs/README.md - ClojureScript package documentationpackages/cljs/components/ty/components/TABS_STYLING.md - Tabs styling guideIf you were using v0.1.x ClojureScript components:
Install the new package:
;; deps.edn
{:deps {dev.gersak/ty {:mvn/version "0.2.0"}}}
Components still work via ClojureScript wrappers in packages/cljs/
Icon registration now required (see Icon System changes above)
Install via NPM:
npm install @gersak/ty
Import components:
import '@gersak/ty/css/ty.css'
import { TyButton, TyDropdown } from '@gersak/ty'
Register icons you need:
import { check, heart } from '@gersak/ty/icons/lucide'
import { registerIcons } from '@gersak/ty/icons/registry'
registerIcons({ check, heart })
See updated example in examples/react-nextjs/:
Use the global window.ty API:
<script src="https://cdn.jsdelivr.net/npm/@gersak/ty/dist/index.js"></script>
<script>
window.ty.icons.register({ /* your icons */ })
</script>
✅ Complete TypeScript migration - All 19 components ported
✅ TyComponent architecture - Unified, maintainable base class
✅ Icon registry system - Flexible, tree-shakeable, easy to use
✅ Framework compatibility - Works with React, Vue, Reagent, vanilla JS
✅ Production ready - Published to NPM as @gersak/ty
✅ Improved mobile UX - Better dropdown and modal experiences
✅ Comprehensive docs - Guides for building, styling, and using components
✅ Zero runtime dependencies - Pure web standards
@gersak/ty v0.2.0dev.gersak/ty v0.2.0This release represents a significant architectural evolution while maintaining backward compatibility through ClojureScript wrappers. Thank you to everyone who contributed feedback and tested the alpha versions!
For detailed component documentation, visit the documentation site or check the README files in each package.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |