Repository navigation
Version Packages - #31
Open
github-actions[bot] wants to merge 1 commit into
Open
github-actions[bot] wants to merge 1 commit into
github-actions[bot] wants to merge 1 commit into
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
30 times, most recently
from
October 13, 2026 06:45
866b595 to
70353f7
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
6 times, most recently
from
October 13, 2026 09:12
f2b287f to
add28e4
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 14, 2026 05:38
add28e4 to
ca64dc6
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@javaabu/onu@0.1.0
Minor Changes
66fea37Thanks @claude! - Setting--onu-primarynow re-brands the whole UI, not just buttons. The neutral tokens (accent,secondary,muted,border,inputand the sidebar ones) are tinted with a little of the primary colour, and brand-coloured states use it: the active sidebar item (with a bar on sub-items), tab underlines, selected table rows, the current pagination page, calendar ranges and today, nav pills and stacked tabs, outline and ghost button hovers, pressed toggles, command items and text selection. Dark-modeprimary-subtleis stronger so it shows on cards, and scopeddata-onu-themesections inside dark mode now get the lifted dark primary. Turn the tint down or off with--onu-tint(e.g.0%) ordata-onu-tint="none"; setting a token such as--onu-accentstill replaces it, and the untinted values are available as--onu-neutral-*. The lightmuted-foregroundis slightly darker (oklch(0.5 0 0)) to keep AA contrast on tinted surfaces.45ec6edThanks @claude! - Charts: addChartAnimationProvider(and exportuseChartAnimation) to turn animation off for every Onu chart in an area, e.g. for print, kiosks or screenshot tests. Tooltips now also stop animating underprefers-reduced-motion, so every Onu chart passesisAnimationActive={false}to all its Recharts elements when reduced motion is preferred. The visual regression spec emulates reduced motion and loads fonts before charts render, so chart screenshots are stable.e7de10bThanks @claude! - Charts: gradient fills, on by default. Areas (LineChartandTimeSeriesChartareas, stacked areas,Sparkline,StatTilesparklines) fade from the series colour to almost clear at the baseline, bars (BarChartvertical, horizontal and stacked,TimeSeriesChartbars,PeriodComparisonChartbars) run from a lighter base to the full colour (mirrored for negative values and for horizontal bars in RTL), and thePeriodComparisonChartline variant gets a soft wash under the current period. Gradients use the series colour, so they follow the theme and--onu-primary, have ids unique per chart instance, and fall back to solid in forced-colours mode. Turn them off withgradient={false}on a chart (sparklineGradientonStatTile) or for an area with the newChartStyleProvider gradient={false};useChartGradientis exported for custom charts. Pie and donut slices stay solid. Tooltip and legend swatches stay solid when a series is filled with a gradient.672865dThanks @claude! - Charts (@javaabu/onu/charts): BarChart, LineChart, PieChart, TimeSeriesChart, PeriodComparisonChart, Sparkline, StatTile/StatTiles, DeltaIndicator and MapChart, plus the shadcn chart primitives and locale-aware formatters (formatMVR,useChartFormat).fd269feThanks @claude! - New@javaabu/onu/exportentry:exportRows({ format, rows, columns, filename, title, scope })anduseExportRows()build CSV, Excel or PDF files in the browser, soExportMenu/ListingPagecan export without a server in one line (onExport={(format) => exportRows({ format, rows, columns })}). Columns take a header, an accessor (key, dotted path or function) and an optional type (text,number,currency,date,datetime,boolean) and formatter. CSV is UTF-8 with a BOM, RFC 4180 quoted and guarded against formula injection. Excel uses the optionalwrite-excel-filepeer (loaded on first use), keeps numbers numeric and dates as dates, and writes right-to-left sheets for Dhivehi. PDF opens the print dialog with a paginated, escaped table document (title, scope, generated date, repeated header row, page numbers,dir/lang, Onu fonts), so Thaana renders correctly. Per-format helpers (toCsv,buildExcelSheet,toExcelBlob,buildPrintDocument,printHtml, …) are exported too.7dd220aThanks @claude! - Display and feedback components: DescriptionList, StatusBadge, Tag, UserAvatar, UserAvatarGroup, KeyboardKey, Callout, Notice, AnnouncementBar, CookieConsent, Toaster/toast, ConditionalLink, ConditionalDisplay, PublishBox, LastEditedBy, RelativeDate, Countdown, ActivityFeed, CommentThread, Notes, IconText, ShareButtons, PrintButton/BackButton, MiniCalendar, ContentCard and error pages (403, 404, 500, 503). Adds thecookie,megaphone,messageandwrenchsemantic icons.1d39453Thanks @claude! -DropzoneUploader: controlledvalue/onValueChangeanddefaultValuefor its file list, so an edit page can show files already saved on the record ({ id, name, size?, type?, url?, thumbnailUrl? }), let the user remove them, and submit the kept ids as hidden inputs. With an uploader, finished uploads are added to the value ({ id, name, size, type, file, response }); without one, pickedFiles are. Existing files count towardmaxFiles; removing a file moves focus back to the Browse button and is announced. New typesDropzoneFileandUploadedFile. Without the new props the uploader behaves as before, except that withmultiple={false}and an uploader, a finished upload now replaces the previous one instead of listing both.8daf873Thanks @claude! - Files and media: FileInput, MultipleFileInput, InstantFileUpload, DropzoneUploader, UploadProgress (withuseUploadQueueand an XHR uploader that understands Laravel JSON errors), AdditionalFilesUpload, ImageInput, MediaLister, Carousel (dots, autoplay with pause, RTL), AttachmentPreview, DocumentDownload, VideoEmbed and FileIcon; and in@javaabu/onu/media: ImageCropper, AvatarUpload, Lightbox, Gallery and MediaPlayer.a9a17c2Thanks @claude! - Form scaffolding:Form(Laravel 422 and react-hook-form support, error summary, focus on the first invalid field),ValidationSummary,FormGroup,Fieldset/FormSection,Label,FormContainer,RepeatingGroup,InlineEdit,AutosaveIndicator+useAutosave,SaveBar+useUnsavedChangesGuard,FloatingSubmit,SubmitButton,Button(loading, icons, success/warning),LinkButton,ButtonGroupand the auth forms (SignInForm,RegisterForm,ForgotPasswordForm,ResetPasswordForm).8a01ae3Thanks @claude! - Form, listing and layout fixes:dir="auto"and sizes read left-to-right in MediaLister, AttachmentPreview, DocumentDownload, FileInput and file rows.interceptHistoryoption).describeChangesis typed per key; auth forms pass every named field toonSubmit(AuthFormValues) and use the transparent divider.padded={false}opts out).childrenkeeps pagination and adds a Sort by menu; state equal todefaultStatestays out of the URL.useFormatFilter,useActiveFilterLabelsandformatFilterLabel; newuseFormatDate,useFormatNumberanduseFormatCurrency.selectionPropagation(propagateTreeSelectionexported).6c57d2fThanks @claude! - New portal building blocks (R3.7):Hero(heading, lead text, actions, search slot, media or a background image under a token-coloured scrim) andFeatureGrid(icon, title, description and link per item, with container-query columns). Adds a fluid type scale (R3.4):text-fluid-sm…text-fluid-5xlutilities built onclamp(), overridable with--onu-text-fluid-*, with taller line heights for Thaana.cn()merges the fluid utilities as font sizes.fe354c8Thanks @claude! - Smaller single-component bundles:<Icon>no longer imports the full Lucide map (~250 icons).OnuProvidersupplies the default set through the icon context, and components with fixed glyphs (Button's loading spinner, Spinner, the shadcn primitives' close buttons, chevrons and checks) pass their Lucide icon as the newfallbackprop, so they keep working outsideOnuProviderandOnuProvider iconsoverrides still win. Importing onlyButtondrops from 20.7 kB to 11.9 kB (brotli),FormField+TextInputfrom 37.2 kB to 28.2 kB. TheIconexported from the package root still resolves every name anywhere. OutsideOnuProvider, names chosen at runtime inside components (e.g.<Button startIcon="add">) now show the generic icon. Wrap your app inOnuProvider, as the installation guide says.401d096Thanks @claude! - First release of Onu: shadcn/ui based components with RTL, Dhivehi and Thaana keyboard support, one-variable theming, dark mode and density modes.20d1b66Thanks @claude! - Smaller, faster builds: code highlighting usesshiki/corewith the JavaScript regex engine and a curated, lazily loaded language set (add more with the newregisterCodeLanguage/registerCodeTheme), instead of Shiki's full ~300-language bundle and WebAssembly; type declarations are generated with TypeScript 7 (about 3.5x faster and no Node heap limit), and Vite no longer computes gzip sizes during builds.94c29ebThanks @claude! - Listing pages:DataTable(TanStack Table v9),ListingPage,useListingState(URL state, §25.6 paging/selection rules),FilterPanel,ActiveFilterChips,FilterTabs,FilterSubmit,SearchBox,SearchResults,Pagination(Laravel paginator / API resource aware),PerPage,BulkActionBar,RowActions,RecordActionsMenu,EmptyState,ExportMenu,ColumnVisibility,ViewSwitcher,ListView,GridView,LoadMore,KanbanBoard,SortableList,ReorderableTable,TreeView,EditableDataGrid, andFilterConditionBuilderin the new@javaabu/onu/query-builderentry.4cf1c3bThanks @claude! - Overlays and loading components: Modal, ConfirmDialog (withuseConfirm()/confirm()andConfirmProvider), SlideOver, BottomSheet, PopoverPanel, Tip, ActionMenu, ContextActionMenu, CommandPalette, Spinner, SkeletonText/Card/Table, PlaceholderInput, LoadingOverlay, PageProgress (pageProgress,usePageProgress) and ProgressBar. Fixes the double-flipped submenu chevron in RTL for the dropdown and context menu primitives.51a5877Thanks @claude! - New default look for the app shell and page layout (ProtonAnt): Proton Mail's shell around Ant Design's content.AppLayoutis a white content panel with a 12px rounded top-start corner and a 1px shell line, on the app shell colour (variant="panel", the default;variant="flat"keeps the previous look). Newbackground="layout"(Ant's layout grey for dashboards of cards) andbreadcrumbs(shown in the page header band, or above the content).useAppLayout()is exported.AppHeaderdefaults tovariant="shell"inside a panel layout: the shell colour, 60px, a wide 40px rounded search, 36px quiet icon buttons and a square account avatar (avatar only below 768px). Outside a panel layout the default is unchanged.AppSidebardefaults tosurface="shell"inside a panel layout: Proton's 36px items with grey hover and active states, brand count pills (badgeTone: "neutral"for plain totals), coloured folders and labels (NavItem.colortints the icon or shows a dot), and a newactionslot for a full-width 44px call to action.Sidebargets asurfaceprop.UsageMeter(a quota bar with "used / total", a link and a note for the sidebar footer) andAppSwitcher(Proton's app grid menu).PageTitleis Ant's PageHeader band for anh1inside a panel layout: breadcrumbs (defaulting to the layout's), title withsubtitleandtags, actions, description with keyfigures, extracontent, and atabsrow with an ink bar.variant="band" | "plain";breadcrumbsalso accepts aBreadcrumbsItem[].ListingPagegets the Ant ProTable layout (variant="card", the default inside a panel layout): the header band with the status tabs, an optional inline query form (queryFiltersorqueryForm) and the list in a table card withtableTitleand tools.FilterPanelgetsvariant="form"(labelled fields in a grid with Reset, Filter and Expand).StatTileis Ant Pro's ChartCard: a 30px regular-weight figure, atipinfo button, a 46pxchartslot and a footer row under a line.Cardfollows Ant: 24px padding, a 1px border line without shadow, and a 56px header row with its own bottom line;padded={false}now removes all padding.NavTabsline tabs andBreadcrumbsfollow Ant too.--shell,--shell-foreground,--shell-border,--shell-field,--shell-hover,--shell-active,--shell-weak,--layout) with Proton's values as fallbacks.7486eb5Thanks @claude! - New default look (ProtonAnt): tokens and content controls. The default brand is Proton purple#6d4aff; greys are Ant Design's plain neutrals (--onu-tintnow defaults to0%; set it to100%for the brand-tinted greys); body text is 14px on a 22px line;--onu-radiusis 6px (cards and popups 8px, tags 4px). New tokens:--onu-shell*(the Proton app shell:#f5f4f2light,#16141cdark),--onu-layout,--onu-preset-{blue,cyan,green,red,gold}(with-borderand-foreground),--onu-shadow-popup,--onu-font-sizeand--onu-line-height, plus the derived Ant-style colour steps--primary-1…--primary-8(Tailwindbg-primary-1…,bg-shell,bg-layout,bg-preset-green,shadow-popup). Controls follow Ant Design: 32px buttons with 14px regular text (outlineis Ant's default button with a brand hover; newdashedvariant;destructiveis solid), fields with#d9d9d9borders, a brand border on hover and a brand border and glow on focus, a 44 × 22 switch, menus with 32px items and the popup shadow, line tabs with an ink bar and count pills, an Ant table (grey header with split lines, 12px 16px cells, selected rows in--primary-1),StatusBadgeandTagas bordered preset-colour tags (Taggains an optionalcolorprop), andPaginationwith numbered pages by default (numbered={false}restores Previous / Next) and the page-size changer after the pages.86ec7a5Thanks @claude! - AddQrCodeto@javaabu/onu/media: a QR code generator that encodes withuqrand renders a themed SVG (currentColor,tonevariant), with error-correction levels, quiet zone, a centre logo that forces level H, an accessible label, and optional PNG/SVG download and copy buttons with English and Dhivehi labels.2f966b5Thanks @claude! -SearchResults: newonShowMore(groupId, group)shows more results of a group on the same page. Groups with more results than shown (total, or the newhasMore) get a Show more button instead of themoreHreflink, with a loading state (return a promise or set the group'sloadingMore), focus moved to the first newly revealed result, and polite announcements of the loaded count or a failure. Without the callback the link behaves as before.classNames.morestyles the link or button.10f02afThanks @claude! - TimeSeriesChart: newvariant("line" | "area" | "bar") andstackedprops for stacked areas and stacked bars on the time axis. The data table, summary and RTL mirroring work as before.Patch Changes
adfa0cfThanks @claude! - CodeBlock: Shiki token colours are adjusted to at least 4.5:1 contrast on the code background (and on highlighted lines) in light and dark mode. The default GitHub themes' keyword red and comment grey fell short of WCAG AA.highlightCodereturns the adjusted colours too.4c7a33bThanks @claude! - Editor and BlockRenderer: lists and quotes now get the direction of their first strong character instead ofdir="auto"(which the browser resolved to LTR because every paragraph inside has its owndir), so bullets, numbers and the quote border sit on the right of Dhivehi text. The direction updates while typing and is included ingetHTML().d172ef0Thanks @claude! - Editor and BlockRenderer: tables now take the direction of their first strong text, like lists and quotes. The table and its scroll wrapper get the resolveddir(inBlockRenderer,getHTML()and, updated while typing, both editors), so a Dhivehi table puts its first column on the right even on an English page. Table cells align to their logical start. An explicitdirin the content still wins; a table with no strong text yet staysdir="auto".4ea0754Thanks @claude! - FormField no longer grows past its grid or flex column when a control holds long content (such as a long file name); its root now hasmin-w-0.252f581Thanks @claude! - FullCalendar: the agenda view no longer overflows by 10,000px in RTL (FullCalendar's off-screen list header is now hidden in place), and month events clip inside their day cell on phones.d784354Thanks @claude! - Maps (Google adapter), found by running the adapter against the real Maps JavaScript API:MapPolygon/MapRoute: the initial value is no longer wiped when it is loaded into terra-draw (terra-draw reported itsclear()as the user deleting every shape).Cannot read properties of null (reading 'addEventListener')when it loaded before the map was ready.PinElementdirectly andgmp-click, removing Google's deprecation warnings.1d02e1dThanks @claude! -applyListingStatereturns every matching row whenperPageisInfinity(it returned none), so "export all rows" exports work.c2a21e8Thanks @claude! - The keyless map preview merges clusters whose buttons would overlap, so cluster targets keep WCAG 2.5.8 spacing.fea252eThanks @claude! - Maps: LiveMap pans to the selected marker whenselectedIdchanges from outside the map (without turning on follow mode). LiveMap, RouteStopEditor, MapRoute, MapPolygon and MapReplay fit their points when nocenter/zoomis given — also when the points load after the first render — in both the Google adapter and the keyless preview; a single point is centred at zoom 15 instead of zooming all the way in.MapView'sboundsis now fitted once, as soon as it is set.ceac3a3Thanks @claude! -StatTilesteps its figure down in narrow tiles (container query) so long values such as currency amounts stay on one line.