diff --git a/.changeset/shaky-books-spend.md b/.changeset/shaky-books-spend.md new file mode 100644 index 00000000..11d483b5 --- /dev/null +++ b/.changeset/shaky-books-spend.md @@ -0,0 +1,36 @@ +--- +"akar": minor +"pohon-ui": minor +--- + +- feat(DropdownMenu): add filter component +- feat(Checkbox/Switch): add support for custom true/false values +- fix(useForwardExpose): sync currentElement on DOM update +- fix(Calendar): parity + docs regen +- feat: color components +- feat: new TimeRangeField Component +- fix(Toast): resolve accessibility issues flagged by axe-core +- fix(DismissableLayer): guard against non-Element targets in isLayerExist +- fix(useBodyScrollLock): prevent permanent scroll lock on rapid toggle +- fix(useHideOthers): edge case with useHideOthers when nested in a native popover +- fix(Splitter): emit correct units for pixel-sized panels in events +- chore(Menu): add aria-labelledby to MenuGroup +- fix(Combobox): close content when focus moves outside with openOnFocus +- fix(Calendar): add role="application" to fix NVDA keyboard navigation +- fix(Splitter): nested px group ignores defaultSize & percentage drift +- fix(useHideOthers): handle browsers without :popover-open support (Safari 18) +- fix(PinInput): paste only numeric text in numeric mode +- fix(Combobox): prevent addOnBlur from adding raw input when selecting item +- fix(useGraceArea): add nil guard for hover target in grace area creation +- fix(Autocomplete): add IME composition input handling +- fix(FocusScope): don't move focus if DOM mutation occurred before any nodes had focus +- fix(tooltip,hovercard): close when scrollable ancestor is scrolled +- fix(Listbox): restore highlightOnHover behavior +- fix(useForwardProps): return Partial to correctly type optional boolean props +- fix(Select): normalize hidden control +- fix(DateField): fixed direct incorrect passing of date values to input element +- chore(deps): update vue (major) +- fix(TimeField,DateField): avoid changing focus prematurely with previous segment value of 0 +- fix(ListboxVirtualizer): ignore non-element VNodes in slot children +- fix(TimeField): change focus after pressing 0 more than once on hour segment with 12 hour locales +- fix(MonthPicker, YearPicker): preserve day/month when selecting diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 5fee4bf6..86d4f223 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -6,7 +6,7 @@ runs: steps: - name: Install pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v5 - name: Setup Node.js environment uses: actions/setup-node@v6 diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 92d9a30e..c47458f7 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -151,7 +151,7 @@ describe('given ComponentName', () => { ## Important File Locations - Component constants: `packages/core/constant/components.ts` -- Primitive base: `packages/core/src/primitive/primitive.ts` +- APrimitive base: `packages/core/src/primitive/primitive.ts` - Pohon module entry: `packages/pohon/src/module.ts` - Docs config: `docs/nuxt.config.ts` - Root scripts: `package.json` (workspace root) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f341c7d9..75c8b247 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -33,7 +33,7 @@ jobs: pohon: ${{ steps.filter.outputs.pohon }} docs: ${{ steps.filter.outputs.docs }} steps: - - uses: dorny/paths-filter@v3 + - uses: dorny/paths-filter@v4 id: filter with: filters: | diff --git a/docs/app/app.vue b/docs/app/app.vue index 141fde16..efaacc87 100644 --- a/docs/app/app.vue +++ b/docs/app/app.vue @@ -1,37 +1,15 @@ diff --git a/docs/app/components/content/examples/pohon/accordion/accordion-markdown-example.vue b/docs/app/components/content/examples/pohon/accordion/accordion-markdown-example.vue index 39803ccd..b455c78a 100644 --- a/docs/app/components/content/examples/pohon/accordion/accordion-markdown-example.vue +++ b/docs/app/components/content/examples/pohon/accordion/accordion-markdown-example.vue @@ -11,9 +11,9 @@ const items = [ content: 'Yes! While optimized for Nuxt, Pohon UI works perfectly with standalone Vue projects via our Vite plugin. You can follow the [installation guide](/docs/pohon/getting-started/installation/vue) to get started.', }, { - label: 'Will Pohon UI work with other CSS frameworks like Tailwind CSS?', + label: 'Will Pohon UI work with other CSS frameworks like UnoCSS?', icon: 'i-lucide:circle-help', - content: 'No. Pohon UI is designed exclusively for UnoCSS. Tailwind CSS support would require significant architecture changes due to different class naming conventions.', + content: 'No. Pohon UI is designed exclusively for UnoCSS. UnoCSS support would require significant architecture changes due to different class naming conventions.', }, { label: 'How does Pohon UI handle accessibility?', diff --git a/docs/app/components/content/examples/pohon/avatar-group/avatar-group-link-example.vue b/docs/app/components/content/examples/pohon/avatar-group/avatar-group-link-example.vue index 3d04a07f..d51181d8 100644 --- a/docs/app/components/content/examples/pohon/avatar-group/avatar-group-link-example.vue +++ b/docs/app/components/content/examples/pohon/avatar-group/avatar-group-link-example.vue @@ -3,7 +3,7 @@ >(() => [{ onUpdateChecked(checked: boolean) { showSidebar.value = checked; }, - onSelect(e: Event) { - e.preventDefault(); + onSelect(event: Event) { + event.preventDefault(); }, }, { label: 'Show Toolbar', diff --git a/docs/app/components/content/examples/pohon/context-menu/context-menu-color-items-example.vue b/docs/app/components/content/examples/pohon/context-menu/context-menu-color-items-example.vue index de752c0a..432ae5fd 100644 --- a/docs/app/components/content/examples/pohon/context-menu/context-menu-color-items-example.vue +++ b/docs/app/components/content/examples/pohon/context-menu/context-menu-color-items-example.vue @@ -31,7 +31,7 @@ const items: Array> = [ :items="items" :pohon="{ content: 'w-48' }" > -
+
Right click here
diff --git a/docs/app/components/content/examples/pohon/context-menu/context-menu-custom-slot-example.vue b/docs/app/components/content/examples/pohon/context-menu/context-menu-custom-slot-example.vue index 11ddef60..8ca4f7df 100644 --- a/docs/app/components/content/examples/pohon/context-menu/context-menu-custom-slot-example.vue +++ b/docs/app/components/content/examples/pohon/context-menu/context-menu-custom-slot-example.vue @@ -23,7 +23,7 @@ const items = [ :items="items" :pohon="{ content: 'w-48' }" > -
+
Right click here
diff --git a/docs/app/components/content/examples/pohon/dropdown-menu/dropdown-menu-checkbox-items-example.vue b/docs/app/components/content/examples/pohon/dropdown-menu/dropdown-menu-checkbox-items-example.vue index 8af7bb95..fca9d79e 100644 --- a/docs/app/components/content/examples/pohon/dropdown-menu/dropdown-menu-checkbox-items-example.vue +++ b/docs/app/components/content/examples/pohon/dropdown-menu/dropdown-menu-checkbox-items-example.vue @@ -20,8 +20,8 @@ const items = computed(() => [{ onUpdateChecked(checked: boolean) { showBookmarks.value = checked; }, - onSelect(e: Event) { - e.preventDefault(); + onSelect(event: Event) { + event.preventDefault(); }, }, { label: 'Show History', diff --git a/docs/app/components/content/examples/pohon/marquee/marquee-screenshots.vue b/docs/app/components/content/examples/pohon/marquee/marquee-screenshots.vue index 7d91c310..aa95cd6c 100644 --- a/docs/app/components/content/examples/pohon/marquee/marquee-screenshots.vue +++ b/docs/app/components/content/examples/pohon/marquee/marquee-screenshots.vue @@ -13,7 +13,7 @@ width="460" height="258" :alt="`Pohon UI Screenshot ${i}`" - class="border-border border rounded-lg bg-white aspect-video" + class="border border-border rounded-lg bg-white aspect-video" >
diff --git a/docs/app/components/content/examples/pohon/navigation-menu/navigation-menu-content-slot-example.vue b/docs/app/components/content/examples/pohon/navigation-menu/navigation-menu-content-slot-example.vue index 1b3ffd1a..d1069db8 100644 --- a/docs/app/components/content/examples/pohon/navigation-menu/navigation-menu-content-slot-example.vue +++ b/docs/app/components/content/examples/pohon/navigation-menu/navigation-menu-content-slot-example.vue @@ -13,7 +13,7 @@ const items = [ }, { label: 'Colors', - description: 'Choose a primary and a neutral color from your Tailwind CSS theme.', + description: 'Choose a primary and a neutral color from your UnoCSS theme.', }, { label: 'Theme', diff --git a/docs/app/components/content/examples/pohon/navigation-menu/navigation-menu-model-value-example.vue b/docs/app/components/content/examples/pohon/navigation-menu/navigation-menu-model-value-example.vue index 2f021770..a22f21d5 100644 --- a/docs/app/components/content/examples/pohon/navigation-menu/navigation-menu-model-value-example.vue +++ b/docs/app/components/content/examples/pohon/navigation-menu/navigation-menu-model-value-example.vue @@ -26,7 +26,7 @@ const items: Array = [ { label: 'Colors', icon: 'i-lucide:swatch-book', - description: 'Choose a primary and a neutral color from your Tailwind CSS theme.', + description: 'Choose a primary and a neutral color from your UnoCSS theme.', }, { label: 'Theme', diff --git a/docs/app/components/content/examples/pohon/popover/popover-cursor-example.vue b/docs/app/components/content/examples/pohon/popover/popover-cursor-example.vue index 41a29ff4..f0d9b3af 100644 --- a/docs/app/components/content/examples/pohon/popover/popover-cursor-example.vue +++ b/docs/app/components/content/examples/pohon/popover/popover-cursor-example.vue @@ -25,7 +25,7 @@ const reference = computed(() => ({ :content="{ side: 'top', sideOffset: 16, updatePositionStrategy: 'always' }" >
-
+
{{ table?.tableApi?.getFilteredSelectedRowModel().rows.length || 0 }} of {{ table?.tableApi?.getFilteredRowModel().rows.length || 0 }} row(s) selected.
diff --git a/docs/app/components/content/examples/pohon/table/table-row-select-event-example.vue b/docs/app/components/content/examples/pohon/table/table-row-select-event-example.vue index 6a7dcfda..6cebb1a5 100644 --- a/docs/app/components/content/examples/pohon/table/table-row-select-event-example.vue +++ b/docs/app/components/content/examples/pohon/table/table-row-select-event-example.vue @@ -106,7 +106,7 @@ const table = useTemplateRef('table'); const rowSelection = ref>({ }); -function onSelect(e: Event, row: PTableRow) { +function onSelect(event: Event, row: PTableRow) { /* If you decide to also select the column you can do this */ row.toggleSelected(!row.getIsSelected()); } diff --git a/docs/app/components/content/examples/pohon/tooltip/tooltip-cursor-example.vue b/docs/app/components/content/examples/pohon/tooltip/tooltip-cursor-example.vue index 1f58c63d..4c083f08 100644 --- a/docs/app/components/content/examples/pohon/tooltip/tooltip-cursor-example.vue +++ b/docs/app/components/content/examples/pohon/tooltip/tooltip-cursor-example.vue @@ -25,7 +25,7 @@ const reference = computed(() => ({ :content="{ side: 'top', sideOffset: 16, updatePositionStrategy: 'always' }" >
-import { APopoverArrow, APopoverClose, APopoverContent, APopoverPortal, APopoverRoot, APopoverTrigger } from 'akar' +import { APopoverArrow, APopoverClose, APopoverContent, APopoverPortal, APopoverRoot, APopoverTrigger } from 'akar';