@ahrowe/ui 0.47.3 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/LICENSE +1 -1
- package/README.md +2 -2
- package/dist/cjs-types/common/actionIcon/actionIcon.types.d.ts +1 -1
- package/dist/cjs-types/common/button/button.types.d.ts +6 -1
- package/dist/cjs-types/common/hooks/useHotkeys.d.ts +11 -0
- package/dist/cjs-types/common/menu/menu.types.d.ts +5 -0
- package/dist/cjs-types/common/menu/menuHotkeys.d.ts +2 -2
- package/dist/cjs-types/common/menu/menuItem.d.ts +10 -0
- package/dist/esm/common/button/button.mjs +1 -1
- package/dist/esm/common/button/button.mjs.map +1 -1
- package/dist/esm/common/button/button.module.mjs +1 -1
- package/dist/esm/common/button/button.module.mjs.map +1 -1
- package/dist/esm/common/button/button.types.mjs.map +1 -1
- package/dist/esm/common/commandPalette/commandPalette.mjs +1 -1
- package/dist/esm/common/commandPalette/commandPalette.mjs.map +1 -1
- package/dist/esm/common/hooks/useHotkeys.mjs +1 -1
- package/dist/esm/common/hooks/useHotkeys.mjs.map +1 -1
- package/dist/esm/common/menu/menu.mjs +1 -1
- package/dist/esm/common/menu/menu.mjs.map +1 -1
- package/dist/esm/common/menu/menu.module.mjs.map +1 -1
- package/dist/esm/common/menu/menu.types.mjs.map +1 -1
- package/dist/esm/common/menu/menuHotkeys.mjs +1 -1
- package/dist/esm/common/menu/menuHotkeys.mjs.map +1 -1
- package/dist/esm/common/menu/menuItem.mjs +2 -0
- package/dist/esm/common/menu/menuItem.mjs.map +1 -0
- package/dist/esm/common/radioGroup/radioGroup.module.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/common/actionIcon/actionIcon.types.d.ts +1 -1
- package/dist/types/common/button/button.types.d.ts +6 -1
- package/dist/types/common/hooks/useHotkeys.d.ts +11 -0
- package/dist/types/common/menu/menu.types.d.ts +5 -0
- package/dist/types/common/menu/menuHotkeys.d.ts +2 -2
- package/dist/types/common/menu/menuItem.d.ts +10 -0
- package/docs/ActionIcon.md +2 -2
- package/docs/Button.md +18 -2
- package/docs/CommandPalette.md +1 -1
- package/docs/Hooks.md +23 -4
- package/docs/InteractableDiv.md +1 -1
- package/docs/Menu.md +7 -6
- package/docs/ProgressBar.md +1 -1
- package/docs/RadioGroup.md +1 -1
- package/docs/ThemeProvider.md +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.module.mjs","names":[],"sources":["../../../../package/common/menu/menu.module.pcss"],"sourcesContent":[".menuPanel {\n padding: 0;\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n min-width: 180px;\n padding: 4px 0;\n box-sizing: border-box;\n font-family: var(--default-font);\n font-size: var(--default-font-size);\n color: var(--text-color);\n\n /* Chrome (background, shadow, radius, positioning) comes from the Popover panel\n this renders inside — keep only the list itself here. */\n\n &-trigger {\n /* The trigger is only here to give Escape somewhere to return the focus to;\n it must not become a box of its own in the consumer's layout. */\n display: contents;\n }\n\n &-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n font: inherit;\n color: inherit;\n text-align: left;\n white-space: nowrap;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n box-sizing: border-box;\n transition: background 0.1s;\n\n /* `:focus`, not `:focus-visible`: the entry with the focus is the one the\n arrow keys are on, and it has to look like it whether the menu was opened\n by keyboard or by mouse. `:focus-visible` would stay dark after a click on\n the trigger, because the browser does not count that as keyboard input.\n\n Not `--background-accent-light`: the panel under this list is\n `--background-modal`, and the default theme gives both the same colour, so\n the highlight was invisible. Dropdown and MultiSelect pick this one too. */\n &:hover:not(:disabled),\n &:focus {\n background: var(--background-accent);\n }\n\n /* The ring would sit on top of the neighbouring rows' backgrounds; the row\n highlight above is what marks the active entry. */\n &:focus {\n outline: none;\n }\n\n &:disabled {\n opacity: 0.45;\n cursor: default;\n }\n\n &-danger {\n color: var(--error-color);\n }\n\n &-icon {\n /* FontAwesome's own rule is unlayered, so it outranks `width` from inside the library's layer and\n reads this instead. `width` still sizes a custom icon. */\n --fa-width: 1em;\n\n flex: none;\n width: 1em;\n text-align: center;\n }\n\n &-label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &-shortcut {\n flex: none;\n margin-left: 16px;\n font-size: 0.85em;\n color: var(--text-light);\n }\n }\n\n &-separator {\n height: 1px;\n margin: 4px 0;\n background: var(--border-color);\n }\n\n &-heading {\n padding: 6px 12px 2px;\n font-size: 0.8em;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--text-light);\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"menu.module.mjs","names":[],"sources":["../../../../package/common/menu/menu.module.pcss"],"sourcesContent":[".menuPanel {\n padding: 0;\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n min-width: 180px;\n padding: 4px 0;\n box-sizing: border-box;\n font-family: var(--default-font);\n font-size: var(--default-font-size);\n color: var(--text-color);\n\n /* Chrome (background, shadow, radius, positioning) comes from the Popover panel\n this renders inside — keep only the list itself here. */\n\n &-trigger {\n /* The trigger is only here to give Escape somewhere to return the focus to;\n it must not become a box of its own in the consumer's layout. */\n display: contents;\n }\n\n &-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n font: inherit;\n color: inherit;\n text-align: left;\n white-space: nowrap;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n box-sizing: border-box;\n transition: background 0.1s;\n\n /* An entry with an `href` is an <a>. */\n text-decoration: none;\n\n /* `:focus`, not `:focus-visible`: the entry with the focus is the one the\n arrow keys are on, and it has to look like it whether the menu was opened\n by keyboard or by mouse. `:focus-visible` would stay dark after a click on\n the trigger, because the browser does not count that as keyboard input.\n\n Not `--background-accent-light`: the panel under this list is\n `--background-modal`, and the default theme gives both the same colour, so\n the highlight was invisible. Dropdown and MultiSelect pick this one too. */\n &:hover:not(:disabled),\n &:focus {\n background: var(--background-accent);\n }\n\n /* The ring would sit on top of the neighbouring rows' backgrounds; the row\n highlight above is what marks the active entry. */\n &:focus {\n outline: none;\n }\n\n &:disabled {\n opacity: 0.45;\n cursor: default;\n }\n\n &-danger {\n color: var(--error-color);\n }\n\n &-icon {\n /* FontAwesome's own rule is unlayered, so it outranks `width` from inside the library's layer and\n reads this instead. `width` still sizes a custom icon. */\n --fa-width: 1em;\n\n flex: none;\n width: 1em;\n text-align: center;\n }\n\n &-label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &-shortcut {\n flex: none;\n margin-left: 16px;\n font-size: 0.85em;\n color: var(--text-light);\n }\n }\n\n &-separator {\n height: 1px;\n margin: 4px 0;\n background: var(--border-color);\n }\n\n &-heading {\n padding: 6px 12px 2px;\n font-size: 0.8em;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--text-light);\n }\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.types.mjs","names":[],"sources":["../../../../package/common/menu/menu.types.ts"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\nimport type { IconContent } from '../types/icon.types';\nimport type { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\nimport type { Presentation } from '../configProvider/presentation.types';\n\n/** One thing the menu can do. */\nexport interface MenuAction {\n /** Stable id, also what `onAction` reports. */\n id: string;\n label: ReactNode;\n icon?: IconContent;\n /**\n * A keyboard shortcut for this action, in `useHotkeys` spelling: `'mod+k'`,\n * `'shift+f2'`, `'delete'`. Shown on the trailing edge written for the\n * platform: `⌘K` on an Apple one, `Ctrl+K` elsewhere.\n *\n * The menu draws it and nothing more. Binding is yours, because only the app\n * knows what else is listening and whether the shortcut should work at all\n * times or only while the menu is open. `menuHotkeys` turns these entries\n * into a `useHotkeys` map, so the one spelling covers both ends.\n */\n shortcut?: string;\n /** Extra search terms for `CommandPalette`, which also matches a string `label`. `Menu` ignores them. */\n keywords?: string[];\n disabled?: boolean;\n /** Renders in the destructive colour. For deleting, discarding, revoking. */\n danger?: boolean;\n onClick?: () => void;\n}\n\n/** A line between groups of actions. */\nexport interface MenuSeparator {\n separator: true;\n}\n\n/** A label over the actions that follow it. */\nexport interface MenuHeading {\n heading: ReactNode;\n}\n\nexport type MenuEntry = MenuAction | MenuSeparator | MenuHeading;\n\nexport function isMenuSeparator(entry: MenuEntry): entry is MenuSeparator {\n return 'separator' in entry;\n}\n\nexport function isMenuHeading(entry: MenuEntry): entry is MenuHeading {\n return 'heading' in entry;\n}\n\nexport function isMenuAction(entry: MenuEntry): entry is MenuAction {\n return !isMenuSeparator(entry) && !isMenuHeading(entry);\n}\n\nexport type MenuSlots =\n | 'root'\n | 'trigger'\n | 'menu'\n | 'item'\n | 'itemIcon'\n | 'itemLabel'\n | 'itemShortcut'\n | 'separator'\n | 'heading';\n\nexport interface MenuProps extends Omit<HtmlProps, 'onSelect'> {\n /** What the menu offers, in the order it is read. */\n items: MenuEntry[];\n /** The element that opens the menu. */\n children?: ReactNode;\n /** Called with the id of the action that was picked, after its own `onClick`. */\n onAction?: (id: string) => void;\n /** Controlled open state. Leave it out to let the menu manage its own. */\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n /** Which side of the trigger the menu opens on (default `Bottom`). */\n placement?: PopoverPlacement;\n /** Which edge it lines up with on the cross axis (default `Start`). */\n align?: PopoverAlign;\n /** Anchored to the trigger, pinned to the bottom of the screen, or the latter only on touch. */\n presentation?: Presentation;\n className?: string;\n style?: CSSProperties;\n classNames?: SlotClassNames<MenuSlots>;\n styles?: SlotStyles<MenuSlots>;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"menu.types.mjs","names":[],"sources":["../../../../package/common/menu/menu.types.ts"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\nimport type { IconContent } from '../types/icon.types';\nimport type { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\nimport type { Presentation } from '../configProvider/presentation.types';\n\n/** One thing the menu can do. */\nexport interface MenuAction {\n /** Stable id, also what `onAction` reports. */\n id: string;\n label: ReactNode;\n icon?: IconContent;\n /**\n * A keyboard shortcut for this action, in `useHotkeys` spelling: `'mod+k'`,\n * `'shift+f2'`, `'delete'`. Shown on the trailing edge written for the\n * platform: `⌘K` on an Apple one, `Ctrl+K` elsewhere.\n *\n * The menu draws it and nothing more. Binding is yours, because only the app\n * knows what else is listening and whether the shortcut should work at all\n * times or only while the menu is open. `menuHotkeys` turns these entries\n * into a `useHotkeys` map, so the one spelling covers both ends.\n */\n shortcut?: string;\n /** Extra search terms for `CommandPalette`, which also matches a string `label`. `Menu` ignores them. */\n keywords?: string[];\n disabled?: boolean;\n /** Renders in the destructive colour. For deleting, discarding, revoking. */\n danger?: boolean;\n /**\n * Followed after `onClick` and `onAction`. In `Menu` a real `<a>`, so Ctrl/⌘-click opens a new tab.\n * Loads the whole page: with a client-side router, navigate in `onClick` instead.\n */\n href?: string;\n onClick?: () => void;\n}\n\n/** A line between groups of actions. */\nexport interface MenuSeparator {\n separator: true;\n}\n\n/** A label over the actions that follow it. */\nexport interface MenuHeading {\n heading: ReactNode;\n}\n\nexport type MenuEntry = MenuAction | MenuSeparator | MenuHeading;\n\nexport function isMenuSeparator(entry: MenuEntry): entry is MenuSeparator {\n return 'separator' in entry;\n}\n\nexport function isMenuHeading(entry: MenuEntry): entry is MenuHeading {\n return 'heading' in entry;\n}\n\nexport function isMenuAction(entry: MenuEntry): entry is MenuAction {\n return !isMenuSeparator(entry) && !isMenuHeading(entry);\n}\n\nexport type MenuSlots =\n | 'root'\n | 'trigger'\n | 'menu'\n | 'item'\n | 'itemIcon'\n | 'itemLabel'\n | 'itemShortcut'\n | 'separator'\n | 'heading';\n\nexport interface MenuProps extends Omit<HtmlProps, 'onSelect'> {\n /** What the menu offers, in the order it is read. */\n items: MenuEntry[];\n /** The element that opens the menu. */\n children?: ReactNode;\n /** Called with the id of the action that was picked, after its own `onClick`. */\n onAction?: (id: string) => void;\n /** Controlled open state. Leave it out to let the menu manage its own. */\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n /** Which side of the trigger the menu opens on (default `Bottom`). */\n placement?: PopoverPlacement;\n /** Which edge it lines up with on the cross axis (default `Start`). */\n align?: PopoverAlign;\n /** Anchored to the trigger, pinned to the bottom of the screen, or the latter only on touch. */\n presentation?: Presentation;\n className?: string;\n style?: CSSProperties;\n classNames?: SlotClassNames<MenuSlots>;\n styles?: SlotStyles<MenuSlots>;\n}\n"],"mappings":"aAgDA,SAAgB,EAAgB,EAA0C,CACxE,MAAO,cAAe,CACxB,CAEA,SAAgB,EAAc,EAAwC,CACpE,MAAO,YAAa,CACtB,CAEA,SAAgB,EAAa,EAAuC,CAClE,MAAO,CAAC,EAAgB,CAAK,GAAK,CAAC,EAAc,CAAK,CACxD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{isMenuAction as e}from"./menu.types.mjs";function
|
|
1
|
+
"use client";import{isMenuAction as e}from"./menu.types.mjs";import{runMenuAction as t}from"./menuItem.mjs";function n(n,r){let i={};for(let a of n)e(a)&&!a.disabled&&a.shortcut&&(i[a.shortcut]=()=>t(a,r));return i}export{n as menuHotkeys};
|
|
2
2
|
//# sourceMappingURL=menuHotkeys.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menuHotkeys.mjs","names":[],"sources":["../../../../package/common/menu/menuHotkeys.ts"],"sourcesContent":["import type { HotkeyMap } from '../hooks/useHotkeys';\nimport { isMenuAction, type MenuEntry } from './menu.types';\n\n/**\n * The bindings for a menu's `shortcut` entries, to hand to `useHotkeys` yourself.\n *\n * The menu draws a shortcut but never listens for one, because only the app knows what else is\n * listening: binding it here as well as in an app's own keymap would run the action twice, and\n * whether a shortcut should work at all times or only while the menu is open is the app's\n * question, not the menu's. Calling this keeps the answer in one spelling, so the hint the menu\n * draws cannot drift from what actually fires.\n *\n * ```tsx\n * useHotkeys(menuHotkeys(items, run)); // whenever the page is up\n * useHotkeys(menuHotkeys(items, run), { enabled: isOpen }); // only while the menu is open\n * ```\n *\n * Runs each entry the way clicking it does: its own `onClick`, then `onAction
|
|
1
|
+
{"version":3,"file":"menuHotkeys.mjs","names":[],"sources":["../../../../package/common/menu/menuHotkeys.ts"],"sourcesContent":["import type { HotkeyMap } from '../hooks/useHotkeys';\nimport { isMenuAction, type MenuEntry } from './menu.types';\nimport { runMenuAction } from './menuItem';\n\n/**\n * The bindings for a menu's `shortcut` entries, to hand to `useHotkeys` yourself.\n *\n * The menu draws a shortcut but never listens for one, because only the app knows what else is\n * listening: binding it here as well as in an app's own keymap would run the action twice, and\n * whether a shortcut should work at all times or only while the menu is open is the app's\n * question, not the menu's. Calling this keeps the answer in one spelling, so the hint the menu\n * draws cannot drift from what actually fires.\n *\n * ```tsx\n * useHotkeys(menuHotkeys(items, run)); // whenever the page is up\n * useHotkeys(menuHotkeys(items, run), { enabled: isOpen }); // only while the menu is open\n * ```\n *\n * Runs each entry the way clicking it does: its own `onClick`, then `onAction`, then its `href`.\n * A `disabled` entry, and an entry with no `shortcut`, is left out.\n */\nexport function menuHotkeys(items: MenuEntry[], onAction?: (id: string) => void): HotkeyMap {\n const bindings: HotkeyMap = {};\n for (const entry of items) {\n if (!isMenuAction(entry) || entry.disabled || !entry.shortcut) continue;\n bindings[entry.shortcut] = () => runMenuAction(entry, onAction);\n }\n return bindings;\n}\n"],"mappings":"4GAqBA,SAAgB,EAAY,EAAoB,EAA4C,CAC1F,IAAM,EAAsB,CAAC,EAC7B,IAAK,IAAM,KAAS,EACb,EAAa,CAAK,GAAK,GAAM,UAAa,EAAM,WACrD,EAAS,EAAM,cAAkB,EAAc,EAAO,CAAQ,GAEhE,OAAO,CACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{renderIcon as e}from"../utils/renderIcon.mjs";import{isMenuAction as t}from"./menu.types.mjs";import{jsx as n}from"react/jsx-runtime";function r(e){return e.some(e=>t(e)&&e.icon!=null)}function i(t,r,i){return t==null?r?n(`span`,{"aria-hidden":!0,...i}):null:e(t,i)}function a(e,t){e.onClick?.(),t?.(e.id),e.href&&o(e.href)}function o(e){let t;try{t=new URL(e,document.baseURI)}catch{return}t.protocol!==`javascript:`&&window.location.assign(t)}export{r as hasAnyIcon,i as renderItemIcon,a as runMenuAction};
|
|
2
|
+
//# sourceMappingURL=menuItem.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menuItem.mjs","names":[],"sources":["../../../../package/common/menu/menuItem.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\n\nimport { renderIcon } from '../utils/renderIcon';\nimport { isMenuAction, type MenuAction, type MenuEntry } from './menu.types';\n\nexport function hasAnyIcon(items: MenuEntry[]): boolean {\n return items.some((entry) => isMenuAction(entry) && entry.icon != null);\n}\n\n/** The action's icon, or an empty cell as wide when another action has one, so the labels line up. */\nexport function renderItemIcon(\n icon: MenuAction['icon'],\n reserveCell: boolean,\n props: { className: string; style?: CSSProperties },\n): ReactNode {\n if (icon != null) return renderIcon(icon, props);\n return reserveCell ? <span aria-hidden {...props} /> : null;\n}\n\n/** Runs an action the way clicking it does: its own `onClick`, then `onAction`, then its `href`. */\nexport function runMenuAction(action: MenuAction, onAction?: (id: string) => void): void {\n action.onClick?.();\n onAction?.(action.id);\n if (action.href) followHref(action.href);\n}\n\nfunction followHref(href: string) {\n let url: URL;\n try {\n url = new URL(href, document.baseURI);\n } catch {\n return;\n }\n // React refuses a javascript: URL on Menu's <a>, so the same entry must not run one here. Parsed,\n // not matched, because the parser strips the spaces and control characters that can hide one.\n if (url.protocol === 'javascript:') return;\n window.location.assign(url);\n}\n"],"mappings":"0JAKA,SAAgB,EAAW,EAA6B,CACtD,OAAO,EAAM,KAAM,GAAU,EAAa,CAAK,GAAK,EAAM,MAAQ,IAAI,CACxE,CAGA,SAAgB,EACd,EACA,EACA,EACW,CAEX,OADI,GAAQ,KACL,EAAc,EAAC,OAAD,CAAM,cAAA,GAAY,GAAI,CAAQ,CAAA,EAAI,KAD9B,EAAW,EAAM,CAAK,CAEjD,CAGA,SAAgB,EAAc,EAAoB,EAAuC,CACvF,EAAO,UAAU,EACjB,IAAW,EAAO,EAAE,EAChB,EAAO,MAAM,EAAW,EAAO,IAAI,CACzC,CAEA,SAAS,EAAW,EAAc,CAChC,IAAI,EACJ,GAAI,CACF,EAAM,IAAI,IAAI,EAAM,SAAS,OAAO,CACtC,MAAQ,CACN,MACF,CAGI,EAAI,WAAa,eACrB,OAAO,SAAS,OAAO,CAAG,CAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radioGroup.module.mjs","names":[],"sources":["../../../../package/common/radioGroup/radioGroup.module.pcss"],"sourcesContent":[".radioGroup {\n /* The base is declared here rather than only on the option, so every em below resolves\n against the theme's text size instead of whatever the group happens to sit in. At a 16px\n base these are the 18px dot, 12px row gap and 10px label gap it has always had. */\n font-size: var(--default-font-size);\n\n --custom-radio-size: var(--radio-size, 1.125em);\n --custom-radio-gap: var(--radio-gap, 0.625em);\n\n user-select: none;\n display: flex;\n flex-direction: column;\n gap: 0.75em;\n width: fit-content;\n\n &-horizontal {\n flex-flow: row wrap;\n gap: 1.25em;\n }\n\n &-disabled {\n filter: brightness(0.85);\n cursor: not-allowed;\n }\n\n &-error &-radio:not(.radioGroup-radio-checked) {\n border-color: var(--error-color);\n }\n\n &-option {\n display: flex;\n align-items: flex-start;\n column-gap: var(--custom-radio-gap);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n border: 1px solid transparent;\n border-radius: var(--default-border-radius);\n margin: -1px;\n color: var(--text-color);\n font-family: var(--default-font);\n\n &:focus-visible {\n outline: none;\n border-color: var(--focus-border-color, var(--primary-color));\n }\n\n &-disabled {\n cursor: not-allowed;\n opacity: 0.55;\n }\n }\n\n &-radio {\n flex-shrink: 0;\n width: var(--custom-radio-size);\n height: var(--custom-radio-size);\n border-radius: 50%;\n border: 0.1125em solid var(--border-color);\n
|
|
1
|
+
{"version":3,"file":"radioGroup.module.mjs","names":[],"sources":["../../../../package/common/radioGroup/radioGroup.module.pcss"],"sourcesContent":[".radioGroup {\n /* The base is declared here rather than only on the option, so every em below resolves\n against the theme's text size instead of whatever the group happens to sit in. At a 16px\n base these are the 18px dot, 12px row gap and 10px label gap it has always had. */\n font-size: var(--default-font-size);\n\n --custom-radio-size: var(--radio-size, 1.125em);\n --custom-radio-gap: var(--radio-gap, 0.625em);\n\n user-select: none;\n display: flex;\n flex-direction: column;\n gap: 0.75em;\n width: fit-content;\n\n &-horizontal {\n flex-flow: row wrap;\n gap: 1.25em;\n }\n\n &-disabled {\n filter: brightness(0.85);\n cursor: not-allowed;\n }\n\n &-error &-radio:not(.radioGroup-radio-checked) {\n border-color: var(--error-color);\n }\n\n &-option {\n display: flex;\n align-items: flex-start;\n column-gap: var(--custom-radio-gap);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n border: 1px solid transparent;\n border-radius: var(--default-border-radius);\n margin: -1px;\n color: var(--text-color);\n font-family: var(--default-font);\n\n &:focus-visible {\n outline: none;\n border-color: var(--focus-border-color, var(--primary-color));\n }\n\n &-disabled {\n cursor: not-allowed;\n opacity: 0.55;\n }\n }\n\n &-radio {\n flex-shrink: 0;\n width: var(--custom-radio-size);\n height: var(--custom-radio-size);\n border-radius: 50%;\n border: 0.1125em solid var(--border-color);\n position: relative;\n margin-top: 0.0625em;\n transition: border-color 0.15s;\n\n &-checked {\n border-color: var(--primary-color);\n }\n }\n\n &-dot {\n /* Inset by a transparent border, not centred by flex: border widths snap to whole device\n pixels, so the gap is equal on every side. A flex-centred 9px dot sat 3.5px into the ring and\n rendered a pixel off. 0.1875 leaves a dot of about half the ring. */\n position: absolute;\n inset: 0;\n border: calc(var(--custom-radio-size) * 0.1875) solid transparent;\n border-radius: 50%;\n background-color: var(--primary-color);\n background-clip: padding-box;\n transform: scale(0);\n transition: transform 0.15s ease;\n\n &-checked {\n transform: scale(1);\n }\n }\n\n &-text {\n display: flex;\n flex-direction: column;\n gap: 0.125em;\n }\n\n &-label {\n line-height: 1.2;\n color: var(--text-color);\n }\n\n &-description {\n font-size: 0.85em;\n line-height: 1.3;\n color: var(--text-dark);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .radioGroup-dot {\n transition: none;\n }\n}\n"],"mappings":""}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{AccordionStyleType as e}from"./common/accordion/accordion.types.mjs";import t from"./common/configProvider/configProvider.mjs";import{useComponentDefaults as n}from"./common/configProvider/useComponentDefaults.mjs";import{useLabels as r}from"./common/configProvider/useLabels.mjs";import{usePresentationDefault as i}from"./common/configProvider/usePresentationDefault.mjs";import{Presentation as a}from"./common/configProvider/presentation.types.mjs";import{ThemeColor as o}from"./common/themeProvider/color.types.mjs";import s from"./common/accordion/accordion.mjs";import{LoaderType as c}from"./common/loader/loader.types.mjs";import l from"./common/loader/loader.mjs";import{ButtonSize as u,ButtonStyleType as d,ButtonType as f}from"./common/button/button.types.mjs";import p from"./common/ripple/ripple.mjs";import m from"./common/button/button.mjs";import h from"./common/actionButtons/actionButtons.mjs";import g from"./common/actionIcon/actionIcon.mjs";import _ from"./common/scrollbarProvider/index.mjs";import{defaultTheme as v}from"./common/themeProvider/defaultTheme.mjs";import y from"./common/themeProvider/themeProvider.mjs";import{lightTheme as b}from"./common/themeProvider/lightTheme.mjs";import x from"./common/bodyEnd/bodyEnd.mjs";import S from"./common/hooks/useMediaQuery.mjs";import C from"./common/hooks/useCoarsePointer.mjs";import{useSwipeDismiss as w}from"./common/hooks/useSwipeDismiss.mjs";import{showToast as T}from"./common/toast/toastService.mjs";import E from"./common/ahroweProvider/ahroweProvider.mjs";import D from"./common/alert/alert.mjs";import O from"./common/animatedLogo/animatedLogo.mjs";import{AnimatedTextUnit as k,AnimatedTextVariant as A}from"./common/animatedText/animatedText.types.mjs";import j from"./common/animatedText/animatedText.mjs";import{BadgePosition as M,BadgeStyleType as N}from"./common/badge/badge.types.mjs";import P from"./common/badge/badge.mjs";import F from"./common/avatar/avatar.mjs";import I from"./common/avatar/avatarGroup.mjs";import L from"./common/interactableDiv/index.mjs";import{PopoverAlign as R,PopoverPlacement as z,PopoverTrigger as B}from"./common/popover/popover.types.mjs";import{tabbablesIn as V}from"./common/hooks/useFocusBoundary.mjs";import{useVisualViewportSize as H}from"./common/hooks/useVisualViewportSize.mjs";import{useOverlay as U}from"./common/hooks/useOverlay.mjs";import W from"./common/popover/popover.mjs";import G from"./common/breadcrumb/breadcrumb.mjs";import{ButtonGroupOrientation as K}from"./common/buttonGroup/buttonGroup.types.mjs";import q from"./common/buttonGroup/buttonGroup.mjs";import{dateToDay as J,dateToTime as Y,dayTimeToDate as X,dayToDate as Z}from"./common/utils/day.mjs";import{CalendarView as Q}from"./common/calendar/calendar.types.mjs";import $ from"./common/emptyState/emptyState.mjs";import ee from"./common/optionPicker/optionPicker.mjs";import te from"./common/calendar/calendar.mjs";import{CardStyleType as ne}from"./common/card/card.types.mjs";import re from"./common/card/Card.mjs";import ie from"./common/card/CardHeader.mjs";import ae from"./common/card/CardMedia.mjs";import oe from"./common/card/CardContent.mjs";import se from"./common/card/CardActions.mjs";import ce from"./common/carousel/carousel.mjs";import le from"./common/checkbox/checkbox.mjs";import{ChipStyleType as ue}from"./common/chip/chip.types.mjs";import de from"./common/chip/chip.mjs";import fe from"./common/chip/chipContainer.mjs";import pe from"./common/tooltip/tooltip.mjs";import{InputIconPosition as me,InputType as he}from"./common/input/input.types.mjs";import ge from"./common/input/input.mjs";import _e from"./common/colorPicker/colorPicker.mjs";import{useScrollEdges as ve}from"./common/hooks/useScrollEdges.mjs";import ye from"./common/modal/modal.mjs";import be,{formatHotkey as xe}from"./common/hooks/useHotkeys.mjs";import{isMenuAction as Se,isMenuHeading as Ce,isMenuSeparator as we}from"./common/menu/menu.types.mjs";import Te from"./common/commandPalette/commandPalette.mjs";import Ee from"./common/confirmModal/confirmModal.mjs";import De from"./common/hooks/useClipboard.mjs";import Oe from"./common/copyButton/copyButton.mjs";import{getLocale as ke,mapLocale as Ae,setLocale as je}from"./services/localization.mjs";import Me from"./common/dropdown/dropdown.mjs";import Ne from"./common/datePicker/datePicker.mjs";import{DividerOrientation as Pe,DividerTextPosition as Fe}from"./common/divider/divider.types.mjs";import Ie from"./common/divider/divider.mjs";import Le from"./common/drawer/drawer.mjs";import{DropZoneReturnType as Re,DropZoneStatus as ze}from"./common/dropZone/dropZone.types.mjs";import Be from"./common/dropZone/dropZone.mjs";import Ve from"./common/errorBoundary/errorBoundary.mjs";import He from"./common/fab/fab.mjs";import Ue from"./common/flip/flip.mjs";import{DoorSwing as We,OpeningKind as Ge,PlanIssueKind as Ke,PlanUnitSystem as qe,WallType as Je}from"./common/floorPlan/floorPlan.types.mjs";import{MIN_OPENING_WIDTH as Ye,MIN_WALL_LENGTH as Xe}from"./common/floorPlan/floorPlan.geometry.mjs";import{DEFAULT_WALL_ATTRS as Ze,addOpening as Qe,addRect as $e,addWall as et,cleanupPlan as tt,detachWall as nt,dissolveNode as rt,mergeNodes as it,moveNode as at,removeOpening as ot,removeWall as st,scalePlan as ct,splitWall as lt,transformPlan as ut,updateOpening as dt,validatePlan as ft,wallLength as pt,weldShortWalls as mt}from"./common/floorPlan/floorPlan.graph.mjs";import{MIN_FLOOR_HEIGHT as ht,addFloor as gt,duplicateFloor as _t,emptyFloor as vt,emptyFloorPlan as yt,floorBelow as bt,floorBounds as xt,floorIndex as St,getFloor as Ct,moveFloor as wt,removeFloor as Tt,renameFloor as Et,setFloor as Dt,setFloorHeight as Ot,updateFloor as kt}from"./common/floorPlan/floorPlan.plan.mjs";import{deriveFaces as At,nodeDegrees as jt}from"./common/floorPlan/floorPlan.faces.mjs";import{commitDerivation as Mt,derivePlan as Nt,pruneUnmatchedRooms as Pt,roomAtPoint as Ft}from"./common/floorPlan/floorPlan.rooms.mjs";import{buildWallPaths as It,openingGeometry as Lt,wallCentrelineSpans as Rt}from"./common/floorPlan/floorPlan.path.mjs";import{HIT_PX as zt,HIT_PX_COARSE as Bt,hitTest as Vt,selectionsEqual as Ht,worldTolerances as Ut}from"./common/floorPlan/floorPlan.hit.mjs";import{DEFAULT_SNAP_OPTIONS as Wt,SnapKind as Gt,clientToWorld as Kt,resolveSnap as qt}from"./common/floorPlan/floorPlan.snap.mjs";import{PLAN_FORMAT_VERSION as Jt,planFromJson as Yt,planToJson as Xt}from"./common/floorPlan/floorPlan.json.mjs";import{buildPlanMesh as Zt}from"./common/floorPlan/floorPlan.mesh.mjs";import Qt from"./common/iconPicker/iconPicker.mjs";import $t from"./common/idleManager/idleManager.mjs";import en from"./common/inputDropdown/inputDropdown.mjs";import tn from"./common/kanbanBoard/KanbanColumn.mjs";import nn from"./common/kanbanBoard/KanbanBoard.mjs";import rn from"./common/searchInput/searchInput.mjs";import an from"./common/klipyPicker/klipyPicker.mjs";import on from"./common/loadingOverlay/loadingOverlay.mjs";import sn from"./common/menu/menu.mjs";import{menuHotkeys as cn}from"./common/menu/menuHotkeys.mjs";import ln from"./common/multiSelect/multiSelect.mjs";import un from"./common/numberInput/index.mjs";import{OtpInputCharset as dn}from"./common/otpInput/otpInput.types.mjs";import fn from"./common/otpInput/otpInput.mjs";import pn from"./common/overscroll/overscroll.mjs";import mn from"./common/pagination/pagination.mjs";import hn from"./common/progressBar/progressBar.mjs";import{RadioGroupOrientation as gn}from"./common/radioGroup/radioGroup.types.mjs";import _n from"./common/radioGroup/radioGroup.mjs";import vn from"./common/rating/rating.mjs";import yn from"./common/revealLens/revealLens.mjs";import bn from"./common/roomDrawer/roomDrawer.mjs";import xn from"./common/roomViewer/roomViewer.mjs";import{ScrollFadeAxis as Sn}from"./common/scrollFade/scrollFade.types.mjs";import Cn from"./common/scrollFade/scrollFade.mjs";import{SectionHeaderSize as wn}from"./common/sectionHeader/sectionHeader.types.mjs";import Tn from"./common/sectionHeader/sectionHeader.mjs";import{SkeletonAnimation as En,SkeletonVariant as Dn}from"./common/skeleton/skeleton.types.mjs";import On from"./common/skeleton/skeleton.mjs";import kn from"./common/slider/slider.mjs";import An from"./common/splitButton/splitButton.mjs";import{StepperCollapse as jn,StepperLabelPlacement as Mn,StepperOrientation as Nn,StepperStyleType as Pn}from"./common/stepper/stepper.types.mjs";import Fn from"./common/stepper/stepper.mjs";import In from"./common/sticky/sticky.mjs";import Ln from"./common/switch/switch.mjs";import Rn from"./common/tabHeader/tabHeader.mjs";import zn from"./common/textarea/textarea.mjs";import{useTheme as Bn}from"./common/themeProvider/useTheme.mjs";import Vn,{TiltGroupContext as Hn,useTiltGroup as Un}from"./common/tiltGroup/tiltGroup.mjs";import{defaultTiltEasing as Wn}from"./common/tilt/tiltMath.mjs";import Gn from"./common/tilt/tilt.mjs";import Kn from"./common/timeInput/timeInput.mjs";import{TimelineAlignment as qn}from"./common/timeline/timeline.types.mjs";import Jn from"./common/timeline/timeline.mjs";import Yn from"./common/timer/timer.mjs";import Xn from"./common/virtualList/virtualList.mjs";import{flattenTree as Zn}from"./common/tree/flattenTree.mjs";import Qn from"./common/tree/tree.mjs";import{WeatherType as $n}from"./common/weatherIcon/weatherIcon.types.mjs";import er from"./common/weatherIcon/weatherIcon.mjs";import tr from"./common/wizard/wizard.mjs";import nr from"./services/formValidation/FormValidatorGroupWithForm.mjs";import rr from"./services/formValidation/validatableComponent.mjs";import{useFormValidatorGroup as ir}from"./services/formValidation/useFormValidatorGroup.mjs";import{FormValidator as ar,Validators as or,useFormValidator as sr}from"./services/formValidation/index.mjs";import{hasEightPasswordChars as cr,hasOnePasswordDigit as lr,hasOnePasswordLetter as ur,isBic as dr,isDate as fr,isDay as pr,isEmail as mr,isISODate as hr,isNumber as gr,isPassword as _r,isURL as vr}from"@ahrowe/form-validation";export{s as Accordion,e as AccordionStyleType,h as ActionButtons,g as ActionIcon,E as AhroweProvider,D as Alert,O as AnimatedLogo,j as AnimatedText,k as AnimatedTextUnit,A as AnimatedTextVariant,F as Avatar,I as AvatarGroup,P as Badge,M as BadgePosition,N as BadgeStyleType,x as BodyEnd,G as Breadcrumb,m as Button,q as ButtonGroup,K as ButtonGroupOrientation,u as ButtonSize,d as ButtonStyleType,f as ButtonType,te as Calendar,Q as CalendarView,re as Card,se as CardActions,oe as CardContent,ie as CardHeader,ae as CardMedia,ne as CardStyleType,ce as Carousel,le as Checkbox,de as Chip,fe as ChipContainer,ue as ChipStyleType,_e as ColorPicker,Te as CommandPalette,t as ConfigProvider,Ee as ConfirmModal,Oe as CopyButton,Wt as DEFAULT_SNAP_OPTIONS,Ze as DEFAULT_WALL_ATTRS,Ne as DatePicker,Ie as Divider,Pe as DividerOrientation,Fe as DividerTextPosition,We as DoorSwing,Le as Drawer,Be as DropZone,Re as DropZoneReturnType,ze as DropZoneStatus,Me as Dropdown,$ as EmptyState,Ve as ErrorBoundary,He as Fab,Ue as Flip,ar as FormValidator,nr as FormValidatorGroup,zt as HIT_PX,Bt as HIT_PX_COARSE,Qt as IconPicker,$t as IdleManager,ge as Input,en as InputDropdown,me as InputIconPosition,he as InputType,L as InteractableDiv,nn as KanbanBoard,tn as KanbanColumn,an as KlipyPicker,l as Loader,c as LoaderType,on as LoadingOverlay,ht as MIN_FLOOR_HEIGHT,Ye as MIN_OPENING_WIDTH,Xe as MIN_WALL_LENGTH,sn as Menu,ye as Modal,ln as MultiSelect,un as NumberInput,Ge as OpeningKind,ee as OptionPicker,fn as OtpInput,dn as OtpInputCharset,pn as Overscroll,Jt as PLAN_FORMAT_VERSION,mn as Pagination,Ke as PlanIssueKind,qe as PlanUnitSystem,W as Popover,R as PopoverAlign,z as PopoverPlacement,B as PopoverTrigger,a as Presentation,hn as ProgressBar,_n as RadioGroup,gn as RadioGroupOrientation,vn as Rating,yn as RevealLens,p as Ripple,bn as RoomDrawer,xn as RoomViewer,Cn as ScrollFade,Sn as ScrollFadeAxis,_ as ScrollbarProvider,rn as SearchInput,Tn as SectionHeader,wn as SectionHeaderSize,On as Skeleton,En as SkeletonAnimation,Dn as SkeletonVariant,kn as Slider,Gt as SnapKind,An as SplitButton,Fn as Stepper,jn as StepperCollapse,Mn as StepperLabelPlacement,Nn as StepperOrientation,Pn as StepperStyleType,In as Sticky,Ln as Switch,Rn as TabHeader,zn as Textarea,o as ThemeColor,y as ThemeProvider,Gn as Tilt,Vn as TiltGroup,Hn as TiltGroupContext,Kn as TimeInput,Jn as Timeline,qn as TimelineAlignment,Yn as Timer,pe as Tooltip,Qn as Tree,rr as ValidatableComponent,or as Validators,Xn as VirtualList,Je as WallType,er as WeatherIcon,$n as WeatherType,tr as Wizard,gt as addFloor,Qe as addOpening,$e as addRect,et as addWall,Zt as buildPlanMesh,It as buildWallPaths,tt as cleanupPlan,Kt as clientToWorld,Mt as commitDerivation,J as dateToDay,Y as dateToTime,X as dayTimeToDate,Z as dayToDate,v as defaultTheme,Wn as defaultTiltEasing,At as deriveFaces,Nt as derivePlan,nt as detachWall,rt as dissolveNode,_t as duplicateFloor,vt as emptyFloor,yt as emptyFloorPlan,Zn as flattenTree,bt as floorBelow,xt as floorBounds,St as floorIndex,xe as formatHotkey,Ct as getFloor,ke as getLocale,cr as hasEightPasswordChars,lr as hasOnePasswordDigit,ur as hasOnePasswordLetter,Vt as hitTest,dr as isBic,fr as isDate,pr as isDay,mr as isEmail,hr as isISODate,Se as isMenuAction,Ce as isMenuHeading,we as isMenuSeparator,gr as isNumber,_r as isPassword,vr as isURL,b as lightTheme,Ae as mapLocale,cn as menuHotkeys,it as mergeNodes,wt as moveFloor,at as moveNode,jt as nodeDegrees,Lt as openingGeometry,Yt as planFromJson,Xt as planToJson,Pt as pruneUnmatchedRooms,Tt as removeFloor,ot as removeOpening,st as removeWall,Et as renameFloor,qt as resolveSnap,Ft as roomAtPoint,ct as scalePlan,Ht as selectionsEqual,Dt as setFloor,Ot as setFloorHeight,je as setLocale,T as showToast,lt as splitWall,V as tabbablesIn,ut as transformPlan,kt as updateFloor,dt as updateOpening,De as useClipboard,C as useCoarsePointer,n as useComponentDefaults,sr as useFormValidator,ir as useFormValidatorGroup,be as useHotkeys,r as useLabels,S as useMediaQuery,U as useOverlay,i as usePresentationDefault,ve as useScrollEdges,w as useSwipeDismiss,Bn as useTheme,Un as useTiltGroup,H as useVisualViewportSize,ft as validatePlan,Rt as wallCentrelineSpans,pt as wallLength,mt as weldShortWalls,Ut as worldTolerances};
|
|
1
|
+
"use client";import{AccordionStyleType as e}from"./common/accordion/accordion.types.mjs";import t from"./common/configProvider/configProvider.mjs";import{useComponentDefaults as n}from"./common/configProvider/useComponentDefaults.mjs";import{useLabels as r}from"./common/configProvider/useLabels.mjs";import{usePresentationDefault as i}from"./common/configProvider/usePresentationDefault.mjs";import{Presentation as a}from"./common/configProvider/presentation.types.mjs";import{ThemeColor as o}from"./common/themeProvider/color.types.mjs";import s from"./common/accordion/accordion.mjs";import{LoaderType as c}from"./common/loader/loader.types.mjs";import l from"./common/loader/loader.mjs";import{ButtonSize as u,ButtonStyleType as d,ButtonType as f}from"./common/button/button.types.mjs";import p from"./common/ripple/ripple.mjs";import m,{formatHotkey as h}from"./common/hooks/useHotkeys.mjs";import g from"./common/button/button.mjs";import _ from"./common/actionButtons/actionButtons.mjs";import v from"./common/actionIcon/actionIcon.mjs";import y from"./common/scrollbarProvider/index.mjs";import{defaultTheme as b}from"./common/themeProvider/defaultTheme.mjs";import x from"./common/themeProvider/themeProvider.mjs";import{lightTheme as S}from"./common/themeProvider/lightTheme.mjs";import C from"./common/bodyEnd/bodyEnd.mjs";import w from"./common/hooks/useMediaQuery.mjs";import T from"./common/hooks/useCoarsePointer.mjs";import{useSwipeDismiss as E}from"./common/hooks/useSwipeDismiss.mjs";import{showToast as D}from"./common/toast/toastService.mjs";import O from"./common/ahroweProvider/ahroweProvider.mjs";import k from"./common/alert/alert.mjs";import A from"./common/animatedLogo/animatedLogo.mjs";import{AnimatedTextUnit as j,AnimatedTextVariant as M}from"./common/animatedText/animatedText.types.mjs";import N from"./common/animatedText/animatedText.mjs";import{BadgePosition as P,BadgeStyleType as F}from"./common/badge/badge.types.mjs";import I from"./common/badge/badge.mjs";import L from"./common/avatar/avatar.mjs";import R from"./common/avatar/avatarGroup.mjs";import z from"./common/interactableDiv/index.mjs";import{PopoverAlign as B,PopoverPlacement as V,PopoverTrigger as H}from"./common/popover/popover.types.mjs";import{tabbablesIn as U}from"./common/hooks/useFocusBoundary.mjs";import{useVisualViewportSize as W}from"./common/hooks/useVisualViewportSize.mjs";import{useOverlay as G}from"./common/hooks/useOverlay.mjs";import K from"./common/popover/popover.mjs";import q from"./common/breadcrumb/breadcrumb.mjs";import{ButtonGroupOrientation as J}from"./common/buttonGroup/buttonGroup.types.mjs";import Y from"./common/buttonGroup/buttonGroup.mjs";import{dateToDay as X,dateToTime as Z,dayTimeToDate as Q,dayToDate as $}from"./common/utils/day.mjs";import{CalendarView as ee}from"./common/calendar/calendar.types.mjs";import te from"./common/emptyState/emptyState.mjs";import ne from"./common/optionPicker/optionPicker.mjs";import re from"./common/calendar/calendar.mjs";import{CardStyleType as ie}from"./common/card/card.types.mjs";import ae from"./common/card/Card.mjs";import oe from"./common/card/CardHeader.mjs";import se from"./common/card/CardMedia.mjs";import ce from"./common/card/CardContent.mjs";import le from"./common/card/CardActions.mjs";import ue from"./common/carousel/carousel.mjs";import de from"./common/checkbox/checkbox.mjs";import{ChipStyleType as fe}from"./common/chip/chip.types.mjs";import pe from"./common/chip/chip.mjs";import me from"./common/chip/chipContainer.mjs";import he from"./common/tooltip/tooltip.mjs";import{InputIconPosition as ge,InputType as _e}from"./common/input/input.types.mjs";import ve from"./common/input/input.mjs";import ye from"./common/colorPicker/colorPicker.mjs";import{useScrollEdges as be}from"./common/hooks/useScrollEdges.mjs";import xe from"./common/modal/modal.mjs";import{isMenuAction as Se,isMenuHeading as Ce,isMenuSeparator as we}from"./common/menu/menu.types.mjs";import Te from"./common/commandPalette/commandPalette.mjs";import Ee from"./common/confirmModal/confirmModal.mjs";import De from"./common/hooks/useClipboard.mjs";import Oe from"./common/copyButton/copyButton.mjs";import{getLocale as ke,mapLocale as Ae,setLocale as je}from"./services/localization.mjs";import Me from"./common/dropdown/dropdown.mjs";import Ne from"./common/datePicker/datePicker.mjs";import{DividerOrientation as Pe,DividerTextPosition as Fe}from"./common/divider/divider.types.mjs";import Ie from"./common/divider/divider.mjs";import Le from"./common/drawer/drawer.mjs";import{DropZoneReturnType as Re,DropZoneStatus as ze}from"./common/dropZone/dropZone.types.mjs";import Be from"./common/dropZone/dropZone.mjs";import Ve from"./common/errorBoundary/errorBoundary.mjs";import He from"./common/fab/fab.mjs";import Ue from"./common/flip/flip.mjs";import{DoorSwing as We,OpeningKind as Ge,PlanIssueKind as Ke,PlanUnitSystem as qe,WallType as Je}from"./common/floorPlan/floorPlan.types.mjs";import{MIN_OPENING_WIDTH as Ye,MIN_WALL_LENGTH as Xe}from"./common/floorPlan/floorPlan.geometry.mjs";import{DEFAULT_WALL_ATTRS as Ze,addOpening as Qe,addRect as $e,addWall as et,cleanupPlan as tt,detachWall as nt,dissolveNode as rt,mergeNodes as it,moveNode as at,removeOpening as ot,removeWall as st,scalePlan as ct,splitWall as lt,transformPlan as ut,updateOpening as dt,validatePlan as ft,wallLength as pt,weldShortWalls as mt}from"./common/floorPlan/floorPlan.graph.mjs";import{MIN_FLOOR_HEIGHT as ht,addFloor as gt,duplicateFloor as _t,emptyFloor as vt,emptyFloorPlan as yt,floorBelow as bt,floorBounds as xt,floorIndex as St,getFloor as Ct,moveFloor as wt,removeFloor as Tt,renameFloor as Et,setFloor as Dt,setFloorHeight as Ot,updateFloor as kt}from"./common/floorPlan/floorPlan.plan.mjs";import{deriveFaces as At,nodeDegrees as jt}from"./common/floorPlan/floorPlan.faces.mjs";import{commitDerivation as Mt,derivePlan as Nt,pruneUnmatchedRooms as Pt,roomAtPoint as Ft}from"./common/floorPlan/floorPlan.rooms.mjs";import{buildWallPaths as It,openingGeometry as Lt,wallCentrelineSpans as Rt}from"./common/floorPlan/floorPlan.path.mjs";import{HIT_PX as zt,HIT_PX_COARSE as Bt,hitTest as Vt,selectionsEqual as Ht,worldTolerances as Ut}from"./common/floorPlan/floorPlan.hit.mjs";import{DEFAULT_SNAP_OPTIONS as Wt,SnapKind as Gt,clientToWorld as Kt,resolveSnap as qt}from"./common/floorPlan/floorPlan.snap.mjs";import{PLAN_FORMAT_VERSION as Jt,planFromJson as Yt,planToJson as Xt}from"./common/floorPlan/floorPlan.json.mjs";import{buildPlanMesh as Zt}from"./common/floorPlan/floorPlan.mesh.mjs";import Qt from"./common/iconPicker/iconPicker.mjs";import $t from"./common/idleManager/idleManager.mjs";import en from"./common/inputDropdown/inputDropdown.mjs";import tn from"./common/kanbanBoard/KanbanColumn.mjs";import nn from"./common/kanbanBoard/KanbanBoard.mjs";import rn from"./common/searchInput/searchInput.mjs";import an from"./common/klipyPicker/klipyPicker.mjs";import on from"./common/loadingOverlay/loadingOverlay.mjs";import sn from"./common/menu/menu.mjs";import{menuHotkeys as cn}from"./common/menu/menuHotkeys.mjs";import ln from"./common/multiSelect/multiSelect.mjs";import un from"./common/numberInput/index.mjs";import{OtpInputCharset as dn}from"./common/otpInput/otpInput.types.mjs";import fn from"./common/otpInput/otpInput.mjs";import pn from"./common/overscroll/overscroll.mjs";import mn from"./common/pagination/pagination.mjs";import hn from"./common/progressBar/progressBar.mjs";import{RadioGroupOrientation as gn}from"./common/radioGroup/radioGroup.types.mjs";import _n from"./common/radioGroup/radioGroup.mjs";import vn from"./common/rating/rating.mjs";import yn from"./common/revealLens/revealLens.mjs";import bn from"./common/roomDrawer/roomDrawer.mjs";import xn from"./common/roomViewer/roomViewer.mjs";import{ScrollFadeAxis as Sn}from"./common/scrollFade/scrollFade.types.mjs";import Cn from"./common/scrollFade/scrollFade.mjs";import{SectionHeaderSize as wn}from"./common/sectionHeader/sectionHeader.types.mjs";import Tn from"./common/sectionHeader/sectionHeader.mjs";import{SkeletonAnimation as En,SkeletonVariant as Dn}from"./common/skeleton/skeleton.types.mjs";import On from"./common/skeleton/skeleton.mjs";import kn from"./common/slider/slider.mjs";import An from"./common/splitButton/splitButton.mjs";import{StepperCollapse as jn,StepperLabelPlacement as Mn,StepperOrientation as Nn,StepperStyleType as Pn}from"./common/stepper/stepper.types.mjs";import Fn from"./common/stepper/stepper.mjs";import In from"./common/sticky/sticky.mjs";import Ln from"./common/switch/switch.mjs";import Rn from"./common/tabHeader/tabHeader.mjs";import zn from"./common/textarea/textarea.mjs";import{useTheme as Bn}from"./common/themeProvider/useTheme.mjs";import Vn,{TiltGroupContext as Hn,useTiltGroup as Un}from"./common/tiltGroup/tiltGroup.mjs";import{defaultTiltEasing as Wn}from"./common/tilt/tiltMath.mjs";import Gn from"./common/tilt/tilt.mjs";import Kn from"./common/timeInput/timeInput.mjs";import{TimelineAlignment as qn}from"./common/timeline/timeline.types.mjs";import Jn from"./common/timeline/timeline.mjs";import Yn from"./common/timer/timer.mjs";import Xn from"./common/virtualList/virtualList.mjs";import{flattenTree as Zn}from"./common/tree/flattenTree.mjs";import Qn from"./common/tree/tree.mjs";import{WeatherType as $n}from"./common/weatherIcon/weatherIcon.types.mjs";import er from"./common/weatherIcon/weatherIcon.mjs";import tr from"./common/wizard/wizard.mjs";import nr from"./services/formValidation/FormValidatorGroupWithForm.mjs";import rr from"./services/formValidation/validatableComponent.mjs";import{useFormValidatorGroup as ir}from"./services/formValidation/useFormValidatorGroup.mjs";import{FormValidator as ar,Validators as or,useFormValidator as sr}from"./services/formValidation/index.mjs";import{hasEightPasswordChars as cr,hasOnePasswordDigit as lr,hasOnePasswordLetter as ur,isBic as dr,isDate as fr,isDay as pr,isEmail as mr,isISODate as hr,isNumber as gr,isPassword as _r,isURL as vr}from"@ahrowe/form-validation";export{s as Accordion,e as AccordionStyleType,_ as ActionButtons,v as ActionIcon,O as AhroweProvider,k as Alert,A as AnimatedLogo,N as AnimatedText,j as AnimatedTextUnit,M as AnimatedTextVariant,L as Avatar,R as AvatarGroup,I as Badge,P as BadgePosition,F as BadgeStyleType,C as BodyEnd,q as Breadcrumb,g as Button,Y as ButtonGroup,J as ButtonGroupOrientation,u as ButtonSize,d as ButtonStyleType,f as ButtonType,re as Calendar,ee as CalendarView,ae as Card,le as CardActions,ce as CardContent,oe as CardHeader,se as CardMedia,ie as CardStyleType,ue as Carousel,de as Checkbox,pe as Chip,me as ChipContainer,fe as ChipStyleType,ye as ColorPicker,Te as CommandPalette,t as ConfigProvider,Ee as ConfirmModal,Oe as CopyButton,Wt as DEFAULT_SNAP_OPTIONS,Ze as DEFAULT_WALL_ATTRS,Ne as DatePicker,Ie as Divider,Pe as DividerOrientation,Fe as DividerTextPosition,We as DoorSwing,Le as Drawer,Be as DropZone,Re as DropZoneReturnType,ze as DropZoneStatus,Me as Dropdown,te as EmptyState,Ve as ErrorBoundary,He as Fab,Ue as Flip,ar as FormValidator,nr as FormValidatorGroup,zt as HIT_PX,Bt as HIT_PX_COARSE,Qt as IconPicker,$t as IdleManager,ve as Input,en as InputDropdown,ge as InputIconPosition,_e as InputType,z as InteractableDiv,nn as KanbanBoard,tn as KanbanColumn,an as KlipyPicker,l as Loader,c as LoaderType,on as LoadingOverlay,ht as MIN_FLOOR_HEIGHT,Ye as MIN_OPENING_WIDTH,Xe as MIN_WALL_LENGTH,sn as Menu,xe as Modal,ln as MultiSelect,un as NumberInput,Ge as OpeningKind,ne as OptionPicker,fn as OtpInput,dn as OtpInputCharset,pn as Overscroll,Jt as PLAN_FORMAT_VERSION,mn as Pagination,Ke as PlanIssueKind,qe as PlanUnitSystem,K as Popover,B as PopoverAlign,V as PopoverPlacement,H as PopoverTrigger,a as Presentation,hn as ProgressBar,_n as RadioGroup,gn as RadioGroupOrientation,vn as Rating,yn as RevealLens,p as Ripple,bn as RoomDrawer,xn as RoomViewer,Cn as ScrollFade,Sn as ScrollFadeAxis,y as ScrollbarProvider,rn as SearchInput,Tn as SectionHeader,wn as SectionHeaderSize,On as Skeleton,En as SkeletonAnimation,Dn as SkeletonVariant,kn as Slider,Gt as SnapKind,An as SplitButton,Fn as Stepper,jn as StepperCollapse,Mn as StepperLabelPlacement,Nn as StepperOrientation,Pn as StepperStyleType,In as Sticky,Ln as Switch,Rn as TabHeader,zn as Textarea,o as ThemeColor,x as ThemeProvider,Gn as Tilt,Vn as TiltGroup,Hn as TiltGroupContext,Kn as TimeInput,Jn as Timeline,qn as TimelineAlignment,Yn as Timer,he as Tooltip,Qn as Tree,rr as ValidatableComponent,or as Validators,Xn as VirtualList,Je as WallType,er as WeatherIcon,$n as WeatherType,tr as Wizard,gt as addFloor,Qe as addOpening,$e as addRect,et as addWall,Zt as buildPlanMesh,It as buildWallPaths,tt as cleanupPlan,Kt as clientToWorld,Mt as commitDerivation,X as dateToDay,Z as dateToTime,Q as dayTimeToDate,$ as dayToDate,b as defaultTheme,Wn as defaultTiltEasing,At as deriveFaces,Nt as derivePlan,nt as detachWall,rt as dissolveNode,_t as duplicateFloor,vt as emptyFloor,yt as emptyFloorPlan,Zn as flattenTree,bt as floorBelow,xt as floorBounds,St as floorIndex,h as formatHotkey,Ct as getFloor,ke as getLocale,cr as hasEightPasswordChars,lr as hasOnePasswordDigit,ur as hasOnePasswordLetter,Vt as hitTest,dr as isBic,fr as isDate,pr as isDay,mr as isEmail,hr as isISODate,Se as isMenuAction,Ce as isMenuHeading,we as isMenuSeparator,gr as isNumber,_r as isPassword,vr as isURL,S as lightTheme,Ae as mapLocale,cn as menuHotkeys,it as mergeNodes,wt as moveFloor,at as moveNode,jt as nodeDegrees,Lt as openingGeometry,Yt as planFromJson,Xt as planToJson,Pt as pruneUnmatchedRooms,Tt as removeFloor,ot as removeOpening,st as removeWall,Et as renameFloor,qt as resolveSnap,Ft as roomAtPoint,ct as scalePlan,Ht as selectionsEqual,Dt as setFloor,Ot as setFloorHeight,je as setLocale,D as showToast,lt as splitWall,U as tabbablesIn,ut as transformPlan,kt as updateFloor,dt as updateOpening,De as useClipboard,T as useCoarsePointer,n as useComponentDefaults,sr as useFormValidator,ir as useFormValidatorGroup,m as useHotkeys,r as useLabels,w as useMediaQuery,G as useOverlay,i as usePresentationDefault,be as useScrollEdges,E as useSwipeDismiss,Bn as useTheme,Un as useTiltGroup,W as useVisualViewportSize,ft as validatePlan,Rt as wallCentrelineSpans,pt as wallLength,mt as weldShortWalls,Ut as worldTolerances};
|