@dashforge/tw 0.1.0-beta
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/.swcrc +29 -0
- package/CHANGELOG.md +131 -0
- package/LICENSE +21 -0
- package/README.md +244 -0
- package/dist/components/AppShell/AppShell.d.ts +32 -0
- package/dist/components/AppShell/AppShell.d.ts.map +1 -0
- package/dist/components/AppShell/appShell.types.d.ts +62 -0
- package/dist/components/AppShell/appShell.types.d.ts.map +1 -0
- package/dist/components/AppShell/appShell.variants.d.ts +65 -0
- package/dist/components/AppShell/appShell.variants.d.ts.map +1 -0
- package/dist/components/Autocomplete/Autocomplete.d.ts +32 -0
- package/dist/components/Autocomplete/Autocomplete.d.ts.map +1 -0
- package/dist/components/Autocomplete/autocomplete.types.d.ts +214 -0
- package/dist/components/Autocomplete/autocomplete.types.d.ts.map +1 -0
- package/dist/components/Autocomplete/autocomplete.variants.d.ts +214 -0
- package/dist/components/Autocomplete/autocomplete.variants.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +23 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts +98 -0
- package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts +85 -0
- package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts.map +1 -0
- package/dist/components/Button/Button.d.ts +44 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/button.types.d.ts +66 -0
- package/dist/components/Button/button.types.d.ts.map +1 -0
- package/dist/components/Button/button.variants.d.ts +104 -0
- package/dist/components/Button/button.variants.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +31 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/checkbox.types.d.ts +86 -0
- package/dist/components/Checkbox/checkbox.types.d.ts.map +1 -0
- package/dist/components/Checkbox/checkbox.variants.d.ts +109 -0
- package/dist/components/Checkbox/checkbox.variants.d.ts.map +1 -0
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts +38 -0
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/ConfirmDialog/confirmDialog.types.d.ts +80 -0
- package/dist/components/ConfirmDialog/confirmDialog.types.d.ts.map +1 -0
- package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts +90 -0
- package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts.map +1 -0
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +49 -0
- package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -0
- package/dist/components/DateTimePicker/dateTimePicker.types.d.ts +95 -0
- package/dist/components/DateTimePicker/dateTimePicker.types.d.ts.map +1 -0
- package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts +165 -0
- package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts.map +1 -0
- package/dist/components/LeftNav/LeftNav.d.ts +34 -0
- package/dist/components/LeftNav/LeftNav.d.ts.map +1 -0
- package/dist/components/LeftNav/leftNav.types.d.ts +136 -0
- package/dist/components/LeftNav/leftNav.types.d.ts.map +1 -0
- package/dist/components/LeftNav/leftNav.variants.d.ts +143 -0
- package/dist/components/LeftNav/leftNav.variants.d.ts.map +1 -0
- package/dist/components/NumberField/NumberField.d.ts +18 -0
- package/dist/components/NumberField/NumberField.d.ts.map +1 -0
- package/dist/components/NumberField/numberField.types.d.ts +79 -0
- package/dist/components/NumberField/numberField.types.d.ts.map +1 -0
- package/dist/components/NumberField/numberField.variants.d.ts +169 -0
- package/dist/components/NumberField/numberField.variants.d.ts.map +1 -0
- package/dist/components/OTPField/OTPField.d.ts +25 -0
- package/dist/components/OTPField/OTPField.d.ts.map +1 -0
- package/dist/components/OTPField/otpField.types.d.ts +74 -0
- package/dist/components/OTPField/otpField.types.d.ts.map +1 -0
- package/dist/components/OTPField/otpField.variants.d.ts +105 -0
- package/dist/components/OTPField/otpField.variants.d.ts.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +35 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup/radioGroup.types.d.ts +103 -0
- package/dist/components/RadioGroup/radioGroup.types.d.ts.map +1 -0
- package/dist/components/RadioGroup/radioGroup.variants.d.ts +166 -0
- package/dist/components/RadioGroup/radioGroup.variants.d.ts.map +1 -0
- package/dist/components/Snackbar/Snackbar.d.ts +37 -0
- package/dist/components/Snackbar/Snackbar.d.ts.map +1 -0
- package/dist/components/Snackbar/snackbar.types.d.ts +86 -0
- package/dist/components/Snackbar/snackbar.types.d.ts.map +1 -0
- package/dist/components/Snackbar/snackbar.variants.d.ts +153 -0
- package/dist/components/Snackbar/snackbar.variants.d.ts.map +1 -0
- package/dist/components/Switch/Switch.d.ts +15 -0
- package/dist/components/Switch/Switch.d.ts.map +1 -0
- package/dist/components/Switch/switch.types.d.ts +47 -0
- package/dist/components/Switch/switch.types.d.ts.map +1 -0
- package/dist/components/Switch/switch.variants.d.ts +105 -0
- package/dist/components/Switch/switch.variants.d.ts.map +1 -0
- package/dist/components/TextField/TextField.d.ts +25 -0
- package/dist/components/TextField/TextField.d.ts.map +1 -0
- package/dist/components/TextField/textField.types.d.ts +72 -0
- package/dist/components/TextField/textField.types.d.ts.map +1 -0
- package/dist/components/TextField/textField.variants.d.ts +160 -0
- package/dist/components/TextField/textField.variants.d.ts.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +16 -0
- package/dist/components/Textarea/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea/textarea.types.d.ts +63 -0
- package/dist/components/Textarea/textarea.types.d.ts.map +1 -0
- package/dist/components/Textarea/textarea.variants.d.ts +197 -0
- package/dist/components/Textarea/textarea.variants.d.ts.map +1 -0
- package/dist/components/TopBar/TopBar.d.ts +33 -0
- package/dist/components/TopBar/TopBar.d.ts.map +1 -0
- package/dist/components/TopBar/topBar.types.d.ts +49 -0
- package/dist/components/TopBar/topBar.types.d.ts.map +1 -0
- package/dist/components/TopBar/topBar.variants.d.ts +79 -0
- package/dist/components/TopBar/topBar.variants.d.ts.map +1 -0
- package/dist/components/_shared/resolveValidationState.d.ts +42 -0
- package/dist/components/_shared/resolveValidationState.d.ts.map +1 -0
- package/dist/hooks/useAccessState.d.ts +37 -0
- package/dist/hooks/useAccessState.d.ts.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +4958 -0
- package/dist/src/components/AppShell/AppShell.d.ts +32 -0
- package/dist/src/components/AppShell/AppShell.d.ts.map +1 -0
- package/dist/src/components/AppShell/appShell.types.d.ts +62 -0
- package/dist/src/components/AppShell/appShell.types.d.ts.map +1 -0
- package/dist/src/components/AppShell/appShell.variants.d.ts +65 -0
- package/dist/src/components/AppShell/appShell.variants.d.ts.map +1 -0
- package/dist/src/components/Autocomplete/Autocomplete.d.ts +32 -0
- package/dist/src/components/Autocomplete/Autocomplete.d.ts.map +1 -0
- package/dist/src/components/Autocomplete/autocomplete.types.d.ts +214 -0
- package/dist/src/components/Autocomplete/autocomplete.types.d.ts.map +1 -0
- package/dist/src/components/Autocomplete/autocomplete.variants.d.ts +214 -0
- package/dist/src/components/Autocomplete/autocomplete.variants.d.ts.map +1 -0
- package/dist/src/components/Breadcrumbs/Breadcrumbs.d.ts +23 -0
- package/dist/src/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
- package/dist/src/components/Breadcrumbs/breadcrumbs.types.d.ts +98 -0
- package/dist/src/components/Breadcrumbs/breadcrumbs.types.d.ts.map +1 -0
- package/dist/src/components/Breadcrumbs/breadcrumbs.variants.d.ts +85 -0
- package/dist/src/components/Breadcrumbs/breadcrumbs.variants.d.ts.map +1 -0
- package/dist/src/components/Button/Button.d.ts +44 -0
- package/dist/src/components/Button/Button.d.ts.map +1 -0
- package/dist/src/components/Button/button.types.d.ts +66 -0
- package/dist/src/components/Button/button.types.d.ts.map +1 -0
- package/dist/src/components/Button/button.variants.d.ts +104 -0
- package/dist/src/components/Button/button.variants.d.ts.map +1 -0
- package/dist/src/components/Checkbox/Checkbox.d.ts +31 -0
- package/dist/src/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/src/components/Checkbox/checkbox.types.d.ts +86 -0
- package/dist/src/components/Checkbox/checkbox.types.d.ts.map +1 -0
- package/dist/src/components/Checkbox/checkbox.variants.d.ts +109 -0
- package/dist/src/components/Checkbox/checkbox.variants.d.ts.map +1 -0
- package/dist/src/components/ConfirmDialog/ConfirmDialog.d.ts +38 -0
- package/dist/src/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -0
- package/dist/src/components/ConfirmDialog/confirmDialog.types.d.ts +80 -0
- package/dist/src/components/ConfirmDialog/confirmDialog.types.d.ts.map +1 -0
- package/dist/src/components/ConfirmDialog/confirmDialog.variants.d.ts +90 -0
- package/dist/src/components/ConfirmDialog/confirmDialog.variants.d.ts.map +1 -0
- package/dist/src/components/DateTimePicker/DateTimePicker.d.ts +49 -0
- package/dist/src/components/DateTimePicker/DateTimePicker.d.ts.map +1 -0
- package/dist/src/components/DateTimePicker/dateTimePicker.types.d.ts +95 -0
- package/dist/src/components/DateTimePicker/dateTimePicker.types.d.ts.map +1 -0
- package/dist/src/components/DateTimePicker/dateTimePicker.variants.d.ts +165 -0
- package/dist/src/components/DateTimePicker/dateTimePicker.variants.d.ts.map +1 -0
- package/dist/src/components/LeftNav/LeftNav.d.ts +34 -0
- package/dist/src/components/LeftNav/LeftNav.d.ts.map +1 -0
- package/dist/src/components/LeftNav/leftNav.types.d.ts +136 -0
- package/dist/src/components/LeftNav/leftNav.types.d.ts.map +1 -0
- package/dist/src/components/LeftNav/leftNav.variants.d.ts +143 -0
- package/dist/src/components/LeftNav/leftNav.variants.d.ts.map +1 -0
- package/dist/src/components/NumberField/NumberField.d.ts +18 -0
- package/dist/src/components/NumberField/NumberField.d.ts.map +1 -0
- package/dist/src/components/NumberField/numberField.types.d.ts +79 -0
- package/dist/src/components/NumberField/numberField.types.d.ts.map +1 -0
- package/dist/src/components/NumberField/numberField.variants.d.ts +169 -0
- package/dist/src/components/NumberField/numberField.variants.d.ts.map +1 -0
- package/dist/src/components/OTPField/OTPField.d.ts +25 -0
- package/dist/src/components/OTPField/OTPField.d.ts.map +1 -0
- package/dist/src/components/OTPField/otpField.types.d.ts +74 -0
- package/dist/src/components/OTPField/otpField.types.d.ts.map +1 -0
- package/dist/src/components/OTPField/otpField.variants.d.ts +105 -0
- package/dist/src/components/OTPField/otpField.variants.d.ts.map +1 -0
- package/dist/src/components/RadioGroup/RadioGroup.d.ts +35 -0
- package/dist/src/components/RadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/src/components/RadioGroup/radioGroup.types.d.ts +103 -0
- package/dist/src/components/RadioGroup/radioGroup.types.d.ts.map +1 -0
- package/dist/src/components/RadioGroup/radioGroup.variants.d.ts +166 -0
- package/dist/src/components/RadioGroup/radioGroup.variants.d.ts.map +1 -0
- package/dist/src/components/Snackbar/Snackbar.d.ts +37 -0
- package/dist/src/components/Snackbar/Snackbar.d.ts.map +1 -0
- package/dist/src/components/Snackbar/snackbar.types.d.ts +86 -0
- package/dist/src/components/Snackbar/snackbar.types.d.ts.map +1 -0
- package/dist/src/components/Snackbar/snackbar.variants.d.ts +153 -0
- package/dist/src/components/Snackbar/snackbar.variants.d.ts.map +1 -0
- package/dist/src/components/Switch/Switch.d.ts +15 -0
- package/dist/src/components/Switch/Switch.d.ts.map +1 -0
- package/dist/src/components/Switch/switch.types.d.ts +47 -0
- package/dist/src/components/Switch/switch.types.d.ts.map +1 -0
- package/dist/src/components/Switch/switch.variants.d.ts +105 -0
- package/dist/src/components/Switch/switch.variants.d.ts.map +1 -0
- package/dist/src/components/TextField/TextField.d.ts +25 -0
- package/dist/src/components/TextField/TextField.d.ts.map +1 -0
- package/dist/src/components/TextField/textField.types.d.ts +72 -0
- package/dist/src/components/TextField/textField.types.d.ts.map +1 -0
- package/dist/src/components/TextField/textField.variants.d.ts +160 -0
- package/dist/src/components/TextField/textField.variants.d.ts.map +1 -0
- package/dist/src/components/Textarea/Textarea.d.ts +16 -0
- package/dist/src/components/Textarea/Textarea.d.ts.map +1 -0
- package/dist/src/components/Textarea/textarea.types.d.ts +63 -0
- package/dist/src/components/Textarea/textarea.types.d.ts.map +1 -0
- package/dist/src/components/Textarea/textarea.variants.d.ts +197 -0
- package/dist/src/components/Textarea/textarea.variants.d.ts.map +1 -0
- package/dist/src/components/TopBar/TopBar.d.ts +33 -0
- package/dist/src/components/TopBar/TopBar.d.ts.map +1 -0
- package/dist/src/components/TopBar/topBar.types.d.ts +49 -0
- package/dist/src/components/TopBar/topBar.types.d.ts.map +1 -0
- package/dist/src/components/TopBar/topBar.variants.d.ts +79 -0
- package/dist/src/components/TopBar/topBar.variants.d.ts.map +1 -0
- package/dist/src/components/_shared/resolveValidationState.d.ts +42 -0
- package/dist/src/components/_shared/resolveValidationState.d.ts.map +1 -0
- package/dist/src/hooks/useAccessState.d.ts +37 -0
- package/dist/src/hooks/useAccessState.d.ts.map +1 -0
- package/dist/src/index.d.ts +82 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/utils/cn.d.ts +26 -0
- package/dist/src/utils/cn.d.ts.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/dist/utils/cn.d.ts +26 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/eslint.config.mjs +47 -0
- package/package.json +37 -0
- package/project.json +15 -0
- package/rollup.config.cjs +16 -0
- package/src/components/AppShell/AppShell.test.tsx +223 -0
- package/src/components/AppShell/AppShell.tsx +114 -0
- package/src/components/AppShell/appShell.types.ts +49 -0
- package/src/components/AppShell/appShell.variants.ts +48 -0
- package/src/components/Autocomplete/Autocomplete.perf.test.tsx +225 -0
- package/src/components/Autocomplete/Autocomplete.test.tsx +556 -0
- package/src/components/Autocomplete/Autocomplete.tsx +996 -0
- package/src/components/Autocomplete/autocomplete.types.ts +198 -0
- package/src/components/Autocomplete/autocomplete.variants.ts +135 -0
- package/src/components/Breadcrumbs/Breadcrumbs.perf.test.tsx +125 -0
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +231 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +203 -0
- package/src/components/Breadcrumbs/breadcrumbs.types.ts +87 -0
- package/src/components/Breadcrumbs/breadcrumbs.variants.ts +49 -0
- package/src/components/Button/Button.test.tsx +183 -0
- package/src/components/Button/Button.tsx +139 -0
- package/src/components/Button/button.types.ts +74 -0
- package/src/components/Button/button.variants.ts +159 -0
- package/src/components/Checkbox/Checkbox.test.tsx +146 -0
- package/src/components/Checkbox/Checkbox.tsx +228 -0
- package/src/components/Checkbox/checkbox.types.ts +88 -0
- package/src/components/Checkbox/checkbox.variants.ts +68 -0
- package/src/components/ConfirmDialog/ConfirmDialog.perf.test.tsx +172 -0
- package/src/components/ConfirmDialog/ConfirmDialog.test.tsx +311 -0
- package/src/components/ConfirmDialog/ConfirmDialog.tsx +252 -0
- package/src/components/ConfirmDialog/confirmDialog.types.ts +70 -0
- package/src/components/ConfirmDialog/confirmDialog.variants.ts +76 -0
- package/src/components/DateTimePicker/DateTimePicker.perf.test.tsx +153 -0
- package/src/components/DateTimePicker/DateTimePicker.test.tsx +204 -0
- package/src/components/DateTimePicker/DateTimePicker.tsx +319 -0
- package/src/components/DateTimePicker/dateTimePicker.types.ts +83 -0
- package/src/components/DateTimePicker/dateTimePicker.variants.ts +84 -0
- package/src/components/LeftNav/LeftNav.perf.test.tsx +172 -0
- package/src/components/LeftNav/LeftNav.test.tsx +302 -0
- package/src/components/LeftNav/LeftNav.tsx +330 -0
- package/src/components/LeftNav/leftNav.types.ts +120 -0
- package/src/components/LeftNav/leftNav.variants.ts +96 -0
- package/src/components/NumberField/NumberField.test.tsx +83 -0
- package/src/components/NumberField/NumberField.tsx +293 -0
- package/src/components/NumberField/numberField.types.ts +72 -0
- package/src/components/NumberField/numberField.variants.ts +94 -0
- package/src/components/OTPField/OTPField.test.tsx +121 -0
- package/src/components/OTPField/OTPField.tsx +250 -0
- package/src/components/OTPField/otpField.types.ts +58 -0
- package/src/components/OTPField/otpField.variants.ts +72 -0
- package/src/components/RadioGroup/RadioGroup.test.tsx +140 -0
- package/src/components/RadioGroup/RadioGroup.tsx +261 -0
- package/src/components/RadioGroup/radioGroup.types.ts +85 -0
- package/src/components/RadioGroup/radioGroup.variants.ts +87 -0
- package/src/components/Snackbar/Snackbar.perf.test.tsx +144 -0
- package/src/components/Snackbar/Snackbar.test.tsx +327 -0
- package/src/components/Snackbar/Snackbar.tsx +298 -0
- package/src/components/Snackbar/snackbar.types.ts +83 -0
- package/src/components/Snackbar/snackbar.variants.ts +72 -0
- package/src/components/Switch/Switch.test.tsx +131 -0
- package/src/components/Switch/Switch.tsx +158 -0
- package/src/components/Switch/switch.types.ts +36 -0
- package/src/components/Switch/switch.variants.ts +65 -0
- package/src/components/TextField/TextField.test.tsx +194 -0
- package/src/components/TextField/TextField.tsx +216 -0
- package/src/components/TextField/textField.types.ts +70 -0
- package/src/components/TextField/textField.variants.ts +87 -0
- package/src/components/Textarea/Textarea.test.tsx +75 -0
- package/src/components/Textarea/Textarea.tsx +190 -0
- package/src/components/Textarea/textarea.types.ts +60 -0
- package/src/components/Textarea/textarea.variants.ts +85 -0
- package/src/components/TopBar/TopBar.test.tsx +129 -0
- package/src/components/TopBar/TopBar.tsx +66 -0
- package/src/components/TopBar/topBar.types.ts +42 -0
- package/src/components/TopBar/topBar.variants.ts +38 -0
- package/src/components/_shared/resolveValidationState.ts +60 -0
- package/src/hooks/useAccessState.spec.tsx +161 -0
- package/src/hooks/useAccessState.ts +81 -0
- package/src/index.ts +191 -0
- package/src/utils/cn.spec.ts +16 -0
- package/src/utils/cn.ts +29 -0
- package/tsconfig.json +13 -0
- package/tsconfig.lib.json +55 -0
- package/tsconfig.spec.json +34 -0
- package/vite.config.ts +25 -0
- package/vitest.config.mts +22 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AppShellProps } from './appShell.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Dashforge TW AppShell — top-level layout orchestrator.
|
|
4
|
+
*
|
|
5
|
+
* ┌──────────────────────────────────────────┐
|
|
6
|
+
* │ header │ ← `header` slot
|
|
7
|
+
* ├────────┬─────────────────────────────────┤
|
|
8
|
+
* │ │ │
|
|
9
|
+
* │ nav │ main │ ← `nav` + `children`
|
|
10
|
+
* │ │ │
|
|
11
|
+
* ├────────┴─────────────────────────────────┤
|
|
12
|
+
* │ footer │ ← `footer` slot
|
|
13
|
+
* └──────────────────────────────────────────┘
|
|
14
|
+
*
|
|
15
|
+
* **Responsive**:
|
|
16
|
+
* - `≥ md`: nav stays in the inline slot at the left.
|
|
17
|
+
* - `< md`: nav becomes a slide-in drawer toggled by `navOpen`.
|
|
18
|
+
* A backdrop closes the drawer on click (mirrors `<Dialog>` UX).
|
|
19
|
+
*
|
|
20
|
+
* **Body scroll lock**: when the mobile drawer is open we add
|
|
21
|
+
* `overflow-hidden` to `<body>` to prevent dual-scroll wobble. The
|
|
22
|
+
* effect cleans up on close + on unmount.
|
|
23
|
+
*
|
|
24
|
+
* **A11y**:
|
|
25
|
+
* - `<main>` landmark wraps the content area.
|
|
26
|
+
* - `<header>` / `<footer>` come for free from their HTML tags.
|
|
27
|
+
* - The mobile drawer + backdrop participate in the standard
|
|
28
|
+
* "click outside to close" pattern — `Escape` closes the drawer
|
|
29
|
+
* too (added via global keydown).
|
|
30
|
+
*/
|
|
31
|
+
export declare function AppShell(props: AppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=AppShell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../../src/components/AppShell/AppShell.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CA+E5C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { AppShellVariants } from './appShell.variants.js';
|
|
3
|
+
export interface AppShellSlotProps {
|
|
4
|
+
root?: {
|
|
5
|
+
className?: string;
|
|
6
|
+
};
|
|
7
|
+
header?: {
|
|
8
|
+
className?: string;
|
|
9
|
+
};
|
|
10
|
+
nav?: {
|
|
11
|
+
className?: string;
|
|
12
|
+
};
|
|
13
|
+
navMobile?: {
|
|
14
|
+
className?: string;
|
|
15
|
+
};
|
|
16
|
+
main?: {
|
|
17
|
+
className?: string;
|
|
18
|
+
};
|
|
19
|
+
footer?: {
|
|
20
|
+
className?: string;
|
|
21
|
+
};
|
|
22
|
+
backdrop?: {
|
|
23
|
+
className?: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Props for `<AppShell>`.
|
|
28
|
+
*
|
|
29
|
+
* Top-level layout orchestrator with 4 named slots:
|
|
30
|
+
*
|
|
31
|
+
* - `header` (top, sticky)
|
|
32
|
+
* - `nav` (left side, fixed-width on desktop, drawer on mobile)
|
|
33
|
+
* - `footer` (bottom, non-sticky)
|
|
34
|
+
* - `children` (main content, scrolls independently)
|
|
35
|
+
*
|
|
36
|
+
* Responsive behavior:
|
|
37
|
+
* - **≥ md (768px)**: nav is rendered inline at the left.
|
|
38
|
+
* - **< md**: nav slides in as an overlay drawer when
|
|
39
|
+
* `navOpen={true}` (controlled).
|
|
40
|
+
*
|
|
41
|
+
* The shell is router-agnostic — pass any nav/header content. Typical
|
|
42
|
+
* pairing is `<LeftNav>` + `<TopBar>` (with a hamburger button in
|
|
43
|
+
* `TopBar.start` that flips `navOpen`).
|
|
44
|
+
*/
|
|
45
|
+
export interface AppShellProps extends AppShellVariants {
|
|
46
|
+
header?: ReactNode;
|
|
47
|
+
nav?: ReactNode;
|
|
48
|
+
footer?: ReactNode;
|
|
49
|
+
children?: ReactNode;
|
|
50
|
+
/**
|
|
51
|
+
* Mobile drawer open state. Controlled — provide
|
|
52
|
+
* `onNavOpenChange` to update. When `undefined`, the mobile drawer
|
|
53
|
+
* is always closed (consumer hasn't wired up the toggle yet).
|
|
54
|
+
*/
|
|
55
|
+
navOpen?: boolean;
|
|
56
|
+
onNavOpenChange?: (open: boolean) => void;
|
|
57
|
+
/** Root className shortcut. */
|
|
58
|
+
sx?: string;
|
|
59
|
+
/** Per-slot className overrides. */
|
|
60
|
+
slotProps?: AppShellSlotProps;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=appShell.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appShell.types.d.ts","sourceRoot":"","sources":["../../../../src/components/AppShell/appShell.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,GAAG,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
/**
|
|
3
|
+
* Tailwind-variants recipe for `<AppShell>`.
|
|
4
|
+
*
|
|
5
|
+
* Slots:
|
|
6
|
+
* - `root` — outer flex column (full viewport)
|
|
7
|
+
* - `header` — top region
|
|
8
|
+
* - `body` — flex row holding nav + main
|
|
9
|
+
* - `nav` — desktop nav rail (md+)
|
|
10
|
+
* - `navMobile` — mobile drawer (slide-in)
|
|
11
|
+
* - `main` — scrollable content area
|
|
12
|
+
* - `footer` — bottom region
|
|
13
|
+
* - `backdrop` — semi-opaque overlay behind the mobile drawer
|
|
14
|
+
*/
|
|
15
|
+
export declare const appShellVariants: import("tailwind-variants").TVReturnType<{
|
|
16
|
+
navOpen: {
|
|
17
|
+
true: {
|
|
18
|
+
navMobile: string;
|
|
19
|
+
backdrop: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
}, {
|
|
23
|
+
root: string;
|
|
24
|
+
header: string;
|
|
25
|
+
body: string;
|
|
26
|
+
nav: string;
|
|
27
|
+
navMobile: string[];
|
|
28
|
+
main: string;
|
|
29
|
+
footer: string;
|
|
30
|
+
backdrop: string[];
|
|
31
|
+
}, undefined, {
|
|
32
|
+
navOpen: {
|
|
33
|
+
true: {
|
|
34
|
+
navMobile: string;
|
|
35
|
+
backdrop: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
}, {
|
|
39
|
+
root: string;
|
|
40
|
+
header: string;
|
|
41
|
+
body: string;
|
|
42
|
+
nav: string;
|
|
43
|
+
navMobile: string[];
|
|
44
|
+
main: string;
|
|
45
|
+
footer: string;
|
|
46
|
+
backdrop: string[];
|
|
47
|
+
}, import("tailwind-variants").TVReturnType<{
|
|
48
|
+
navOpen: {
|
|
49
|
+
true: {
|
|
50
|
+
navMobile: string;
|
|
51
|
+
backdrop: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
}, {
|
|
55
|
+
root: string;
|
|
56
|
+
header: string;
|
|
57
|
+
body: string;
|
|
58
|
+
nav: string;
|
|
59
|
+
navMobile: string[];
|
|
60
|
+
main: string;
|
|
61
|
+
footer: string;
|
|
62
|
+
backdrop: string[];
|
|
63
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
64
|
+
export type AppShellVariants = VariantProps<typeof appShellVariants>;
|
|
65
|
+
//# sourceMappingURL=appShell.variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appShell.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/AppShell/appShell.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA8B3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AutocompleteOption, AutocompleteProps } from './autocomplete.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Dashforge TW Autocomplete — bridge-integrated single-select combobox.
|
|
4
|
+
*
|
|
5
|
+
* **Implementation note (F5-A, rev. 2)**
|
|
6
|
+
*
|
|
7
|
+
* The first revision wrapped `react-aria-components`' `<ComboBox>` to get
|
|
8
|
+
* AAA-grade a11y for free. In practice React Aria's internal state
|
|
9
|
+
* machine fought every controlled-state pattern we tried (the input text
|
|
10
|
+
* would not clear when `selectedKey` went to `null`, even with a forced
|
|
11
|
+
* remount via `key` bumping). To get deterministic behaviour we own all
|
|
12
|
+
* of the state ourselves:
|
|
13
|
+
*
|
|
14
|
+
* - `inputValue` — the visible text in the `<input>`
|
|
15
|
+
* - `isOpen` — popover visibility
|
|
16
|
+
* - `highlightedIndex` — keyboard navigation cursor
|
|
17
|
+
*
|
|
18
|
+
* A11y is still solid:
|
|
19
|
+
* - `role="combobox"` + `aria-autocomplete="list"` on the input
|
|
20
|
+
* - `aria-expanded`, `aria-controls`, `aria-activedescendant`
|
|
21
|
+
* - `role="listbox"` / `role="option"` with `aria-selected`
|
|
22
|
+
* - Full keyboard nav (↑/↓ navigate, Enter selects, Escape closes,
|
|
23
|
+
* Home/End jump, Tab closes, click-outside closes)
|
|
24
|
+
* - Required field gets `aria-required="true"`
|
|
25
|
+
*
|
|
26
|
+
* F5-A scope: single-select, static options, contains-substring filter
|
|
27
|
+
* (case-insensitive). Multi-select, free-solo text, generic option
|
|
28
|
+
* shapes, and async runtime options (`optionsFromFieldData`) are
|
|
29
|
+
* deferred to F5-A-bis.
|
|
30
|
+
*/
|
|
31
|
+
export declare function Autocomplete<TOption = AutocompleteOption>(props: AutocompleteProps<TOption>): import("react/jsx-runtime").JSX.Element | null;
|
|
32
|
+
//# sourceMappingURL=Autocomplete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,yBAAyB,CAAC;AAuCjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAG,kBAAkB,EACvD,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,kDAu4BlC"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { Engine } from '@dashforge/ui-core';
|
|
3
|
+
import type { AccessRequirement } from '@dashforge/rbac';
|
|
4
|
+
import type { AutocompleteVariants } from './autocomplete.variants.js';
|
|
5
|
+
/**
|
|
6
|
+
* Default `{ value, label, disabled? }` option shape.
|
|
7
|
+
*
|
|
8
|
+
* The simplest shape and the one used by the component when no
|
|
9
|
+
* `getOptionValue` / `getOptionLabel` props are provided. For richer
|
|
10
|
+
* option shapes (e.g., `{ id, name, country, ... }`) make the component
|
|
11
|
+
* generic by passing `<TOption>` and providing the accessors:
|
|
12
|
+
*
|
|
13
|
+
* ```tsx
|
|
14
|
+
* type User = { id: string; name: string; admin?: boolean };
|
|
15
|
+
*
|
|
16
|
+
* <Autocomplete<User>
|
|
17
|
+
* name="owner"
|
|
18
|
+
* options={users}
|
|
19
|
+
* getOptionValue={(u) => u.id}
|
|
20
|
+
* getOptionLabel={(u) => u.name}
|
|
21
|
+
* getOptionDisabled={(u) => !u.admin}
|
|
22
|
+
* />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export interface AutocompleteOption {
|
|
26
|
+
/** Value persisted on the form. */
|
|
27
|
+
value: string;
|
|
28
|
+
/** Display label (string or any React node). */
|
|
29
|
+
label: ReactNode;
|
|
30
|
+
/** Per-option explicit disable. */
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface AutocompleteSlotProps {
|
|
34
|
+
root?: {
|
|
35
|
+
className?: string;
|
|
36
|
+
};
|
|
37
|
+
label?: {
|
|
38
|
+
className?: string;
|
|
39
|
+
};
|
|
40
|
+
requiredMark?: {
|
|
41
|
+
className?: string;
|
|
42
|
+
};
|
|
43
|
+
inputWrapper?: {
|
|
44
|
+
className?: string;
|
|
45
|
+
};
|
|
46
|
+
input?: {
|
|
47
|
+
className?: string;
|
|
48
|
+
};
|
|
49
|
+
trigger?: {
|
|
50
|
+
className?: string;
|
|
51
|
+
};
|
|
52
|
+
clearButton?: {
|
|
53
|
+
className?: string;
|
|
54
|
+
};
|
|
55
|
+
popover?: {
|
|
56
|
+
className?: string;
|
|
57
|
+
};
|
|
58
|
+
listBox?: {
|
|
59
|
+
className?: string;
|
|
60
|
+
};
|
|
61
|
+
listItem?: {
|
|
62
|
+
className?: string;
|
|
63
|
+
};
|
|
64
|
+
emptyState?: {
|
|
65
|
+
className?: string;
|
|
66
|
+
};
|
|
67
|
+
helperText?: {
|
|
68
|
+
className?: string;
|
|
69
|
+
};
|
|
70
|
+
errorText?: {
|
|
71
|
+
className?: string;
|
|
72
|
+
};
|
|
73
|
+
/** Wrapper around the chip list (multi-select only). */
|
|
74
|
+
chipsList?: {
|
|
75
|
+
className?: string;
|
|
76
|
+
};
|
|
77
|
+
/** Individual chip displayed in multi-select. */
|
|
78
|
+
chip?: {
|
|
79
|
+
className?: string;
|
|
80
|
+
};
|
|
81
|
+
/** `×` button on a chip. */
|
|
82
|
+
chipRemove?: {
|
|
83
|
+
className?: string;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Union of the value shapes `<Autocomplete>` accepts.
|
|
88
|
+
*
|
|
89
|
+
* - **Single-select (default)**: `string | null`
|
|
90
|
+
* - **Multi-select** (`multiple` prop): `string[] | null`
|
|
91
|
+
*
|
|
92
|
+
* `null` means "no selection" in both modes — a multi-select with no
|
|
93
|
+
* picks emits an empty array on first commit, then keeps emitting arrays.
|
|
94
|
+
*/
|
|
95
|
+
export type AutocompleteValue = string | string[] | null;
|
|
96
|
+
/**
|
|
97
|
+
* Props for `<Autocomplete>`.
|
|
98
|
+
*
|
|
99
|
+
* Bridge-integrated single-select combobox with full ARIA combobox
|
|
100
|
+
* a11y, keyboard navigation, and Form Closure v1 error gating.
|
|
101
|
+
*
|
|
102
|
+
* Mirrors the MUI-side `@dashforge/ui/Autocomplete` at the bridge
|
|
103
|
+
* level — same `name` / `rules` / `visibleWhen` / `access` semantics,
|
|
104
|
+
* same StrictMode-safe unregister-on-unmount.
|
|
105
|
+
*
|
|
106
|
+
* @typeParam TOption Shape of an option. Defaults to
|
|
107
|
+
* `AutocompleteOption` (`{ value, label, disabled? }`).
|
|
108
|
+
* Pass `<TOption>` + `getOptionValue` / `getOptionLabel`
|
|
109
|
+
* for arbitrary domain types.
|
|
110
|
+
*/
|
|
111
|
+
export interface AutocompleteProps<TOption = AutocompleteOption> extends AutocompleteVariants {
|
|
112
|
+
name: string;
|
|
113
|
+
rules?: unknown;
|
|
114
|
+
options: TOption[];
|
|
115
|
+
label?: ReactNode;
|
|
116
|
+
helperText?: ReactNode;
|
|
117
|
+
required?: boolean;
|
|
118
|
+
error?: boolean;
|
|
119
|
+
disabled?: boolean;
|
|
120
|
+
/** Placeholder shown when the input is empty. */
|
|
121
|
+
placeholder?: string;
|
|
122
|
+
/** Engine predicate — field not rendered when it returns `false`. */
|
|
123
|
+
visibleWhen?: (engine: Engine) => boolean;
|
|
124
|
+
/** RBAC access requirement. */
|
|
125
|
+
access?: AccessRequirement;
|
|
126
|
+
/** Root className shortcut. */
|
|
127
|
+
sx?: string;
|
|
128
|
+
/** Per-slot className overrides. */
|
|
129
|
+
slotProps?: AutocompleteSlotProps;
|
|
130
|
+
/** Controlled value (form mode reads from the bridge if omitted). */
|
|
131
|
+
value?: AutocompleteValue;
|
|
132
|
+
/** Default value for uncontrolled mode (no-op in form mode). */
|
|
133
|
+
defaultValue?: AutocompleteValue;
|
|
134
|
+
/** Fires when the user picks an option (after bridge update in form mode). */
|
|
135
|
+
onValueChange?: (value: AutocompleteValue) => void;
|
|
136
|
+
/** Fallback text when no option matches the typed filter. */
|
|
137
|
+
emptyMessage?: string;
|
|
138
|
+
/**
|
|
139
|
+
* Multi-select mode. When `true`:
|
|
140
|
+
*
|
|
141
|
+
* - `value` / `defaultValue` accept `string[]` (or `null`).
|
|
142
|
+
* - Picks are toggled rather than replaced; the popover stays open.
|
|
143
|
+
* - Selected items render as chips inside the input wrapper.
|
|
144
|
+
* - Backspace at the start of an empty input removes the last chip.
|
|
145
|
+
* - The clear button (`×`) clears the entire selection.
|
|
146
|
+
*/
|
|
147
|
+
multiple?: boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Allow committing arbitrary strings (not just option values).
|
|
150
|
+
*
|
|
151
|
+
* When `true`:
|
|
152
|
+
* - **Enter** commits the typed text as the value when no option
|
|
153
|
+
* row is highlighted (or no rows match the filter).
|
|
154
|
+
* - **Blur** commits the typed text the same way, unless the text
|
|
155
|
+
* exactly matches an existing option's label (in which case the
|
|
156
|
+
* option's value snaps in).
|
|
157
|
+
* - In multi mode, each free-solo commit adds a new chip whose key
|
|
158
|
+
* and label are the typed string.
|
|
159
|
+
*
|
|
160
|
+
* Free-solo is independent of `multiple` — works in both modes.
|
|
161
|
+
*/
|
|
162
|
+
freeSolo?: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Async option loader. Called (debounced by `loadDebounceMs`) every
|
|
165
|
+
* time the user types in the input. Results replace the static
|
|
166
|
+
* `options` prop while the user is actively filtering.
|
|
167
|
+
*
|
|
168
|
+
* Return a promise that resolves with the new option list. Reject /
|
|
169
|
+
* throw to surface a generic empty state.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```tsx
|
|
173
|
+
* <Autocomplete
|
|
174
|
+
* name="user"
|
|
175
|
+
* options={[]}
|
|
176
|
+
* loadOptions={async (q) => {
|
|
177
|
+
* const res = await fetch(`/api/users?q=${q}`);
|
|
178
|
+
* return res.ok ? res.json() : [];
|
|
179
|
+
* }}
|
|
180
|
+
* />
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
loadOptions?: (query: string) => Promise<TOption[]>;
|
|
184
|
+
/**
|
|
185
|
+
* Debounce window (ms) for `loadOptions`. The loader fires after the
|
|
186
|
+
* user stops typing for this long.
|
|
187
|
+
* @default 250
|
|
188
|
+
*/
|
|
189
|
+
loadDebounceMs?: number;
|
|
190
|
+
/** Text displayed in the popover while a fetch is in flight. */
|
|
191
|
+
loadingMessage?: ReactNode;
|
|
192
|
+
/**
|
|
193
|
+
* Extract the persistable value (string) from an option.
|
|
194
|
+
* @default `(o) => (o as AutocompleteOption).value`
|
|
195
|
+
*/
|
|
196
|
+
getOptionValue?: (option: TOption) => string;
|
|
197
|
+
/**
|
|
198
|
+
* Extract the display label from an option.
|
|
199
|
+
* @default `(o) => (o as AutocompleteOption).label`
|
|
200
|
+
*/
|
|
201
|
+
getOptionLabel?: (option: TOption) => ReactNode;
|
|
202
|
+
/**
|
|
203
|
+
* Per-option disabled flag.
|
|
204
|
+
* @default `(o) => Boolean((o as AutocompleteOption).disabled)`
|
|
205
|
+
*/
|
|
206
|
+
getOptionDisabled?: (option: TOption) => boolean;
|
|
207
|
+
/**
|
|
208
|
+
* Unique React key for an option. Defaults to `getOptionValue`.
|
|
209
|
+
* Override if your `value` strings can collide across distinct
|
|
210
|
+
* option records (rare).
|
|
211
|
+
*/
|
|
212
|
+
getOptionKey?: (option: TOption) => string;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=autocomplete.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/autocomplete.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,EAAE,SAAS,CAAC;IACjB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,wDAAwD;IACxD,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,iDAAiD;IACjD,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,4BAA4B;IAC5B,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,kBAAkB,CAC7D,SAAQ,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,+BAA+B;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,qEAAqE;IACrE,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,gEAAgE;IAChE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACnD,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IAItB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAInB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAInB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,cAAc,CAAC,EAAE,SAAS,CAAC;IAI3B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;IAC7C;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC;IAChD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IACjD;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;CAC5C"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
/**
|
|
3
|
+
* Tailwind-variants recipe for `<Autocomplete>` with slots.
|
|
4
|
+
*
|
|
5
|
+
* Slots:
|
|
6
|
+
* - `root` — outer wrapper (label + combobox + helper/error)
|
|
7
|
+
* - `label` — text label above the input
|
|
8
|
+
* - `requiredMark` — red `*` for required fields
|
|
9
|
+
* - `inputWrapper` — surface holding the input + clear/trigger buttons
|
|
10
|
+
* - `input` — the typeable text input
|
|
11
|
+
* - `trigger` — caret / chevron button that opens the popover
|
|
12
|
+
* - `clearButton` — `×` button to clear the current selection
|
|
13
|
+
* - `popover` — floating panel containing the option list
|
|
14
|
+
* - `listBox` — list element wrapping the options
|
|
15
|
+
* - `listItem` — single option row
|
|
16
|
+
* - `emptyState` — fallback when no options match the filter
|
|
17
|
+
* - `helperText` — descriptive line below the input
|
|
18
|
+
* - `errorText` — semantic counterpart for error mode
|
|
19
|
+
* - `chipsList` — wrapper around selected chips (multi-select only)
|
|
20
|
+
* - `chip` — individual selected chip
|
|
21
|
+
* - `chipRemove` — `×` button on a chip
|
|
22
|
+
*/
|
|
23
|
+
export declare const autocompleteVariants: import("tailwind-variants").TVReturnType<{
|
|
24
|
+
size: {
|
|
25
|
+
sm: {
|
|
26
|
+
inputWrapper: string;
|
|
27
|
+
input: string;
|
|
28
|
+
trigger: string;
|
|
29
|
+
clearButton: string;
|
|
30
|
+
};
|
|
31
|
+
md: {
|
|
32
|
+
inputWrapper: string;
|
|
33
|
+
input: string;
|
|
34
|
+
trigger: string;
|
|
35
|
+
clearButton: string;
|
|
36
|
+
};
|
|
37
|
+
lg: {
|
|
38
|
+
inputWrapper: string;
|
|
39
|
+
input: string;
|
|
40
|
+
trigger: string;
|
|
41
|
+
clearButton: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
layout: {
|
|
45
|
+
stacked: {
|
|
46
|
+
root: string;
|
|
47
|
+
};
|
|
48
|
+
inline: {
|
|
49
|
+
root: string;
|
|
50
|
+
label: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
error: {
|
|
54
|
+
true: {
|
|
55
|
+
inputWrapper: string;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
fullWidth: {
|
|
59
|
+
true: {
|
|
60
|
+
root: string;
|
|
61
|
+
inputWrapper: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
disabled: {
|
|
65
|
+
true: {
|
|
66
|
+
inputWrapper: string;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
}, {
|
|
70
|
+
root: string;
|
|
71
|
+
label: string;
|
|
72
|
+
requiredMark: string;
|
|
73
|
+
inputWrapper: string[];
|
|
74
|
+
input: string[];
|
|
75
|
+
trigger: string[];
|
|
76
|
+
clearButton: string[];
|
|
77
|
+
popover: string[];
|
|
78
|
+
listBox: string;
|
|
79
|
+
listItem: string[];
|
|
80
|
+
emptyState: string;
|
|
81
|
+
helperText: string;
|
|
82
|
+
errorText: string;
|
|
83
|
+
chipsList: string;
|
|
84
|
+
chip: string[];
|
|
85
|
+
chipRemove: string[];
|
|
86
|
+
}, undefined, {
|
|
87
|
+
size: {
|
|
88
|
+
sm: {
|
|
89
|
+
inputWrapper: string;
|
|
90
|
+
input: string;
|
|
91
|
+
trigger: string;
|
|
92
|
+
clearButton: string;
|
|
93
|
+
};
|
|
94
|
+
md: {
|
|
95
|
+
inputWrapper: string;
|
|
96
|
+
input: string;
|
|
97
|
+
trigger: string;
|
|
98
|
+
clearButton: string;
|
|
99
|
+
};
|
|
100
|
+
lg: {
|
|
101
|
+
inputWrapper: string;
|
|
102
|
+
input: string;
|
|
103
|
+
trigger: string;
|
|
104
|
+
clearButton: string;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
layout: {
|
|
108
|
+
stacked: {
|
|
109
|
+
root: string;
|
|
110
|
+
};
|
|
111
|
+
inline: {
|
|
112
|
+
root: string;
|
|
113
|
+
label: string;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
error: {
|
|
117
|
+
true: {
|
|
118
|
+
inputWrapper: string;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
fullWidth: {
|
|
122
|
+
true: {
|
|
123
|
+
root: string;
|
|
124
|
+
inputWrapper: string;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
disabled: {
|
|
128
|
+
true: {
|
|
129
|
+
inputWrapper: string;
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
}, {
|
|
133
|
+
root: string;
|
|
134
|
+
label: string;
|
|
135
|
+
requiredMark: string;
|
|
136
|
+
inputWrapper: string[];
|
|
137
|
+
input: string[];
|
|
138
|
+
trigger: string[];
|
|
139
|
+
clearButton: string[];
|
|
140
|
+
popover: string[];
|
|
141
|
+
listBox: string;
|
|
142
|
+
listItem: string[];
|
|
143
|
+
emptyState: string;
|
|
144
|
+
helperText: string;
|
|
145
|
+
errorText: string;
|
|
146
|
+
chipsList: string;
|
|
147
|
+
chip: string[];
|
|
148
|
+
chipRemove: string[];
|
|
149
|
+
}, import("tailwind-variants").TVReturnType<{
|
|
150
|
+
size: {
|
|
151
|
+
sm: {
|
|
152
|
+
inputWrapper: string;
|
|
153
|
+
input: string;
|
|
154
|
+
trigger: string;
|
|
155
|
+
clearButton: string;
|
|
156
|
+
};
|
|
157
|
+
md: {
|
|
158
|
+
inputWrapper: string;
|
|
159
|
+
input: string;
|
|
160
|
+
trigger: string;
|
|
161
|
+
clearButton: string;
|
|
162
|
+
};
|
|
163
|
+
lg: {
|
|
164
|
+
inputWrapper: string;
|
|
165
|
+
input: string;
|
|
166
|
+
trigger: string;
|
|
167
|
+
clearButton: string;
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
layout: {
|
|
171
|
+
stacked: {
|
|
172
|
+
root: string;
|
|
173
|
+
};
|
|
174
|
+
inline: {
|
|
175
|
+
root: string;
|
|
176
|
+
label: string;
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
error: {
|
|
180
|
+
true: {
|
|
181
|
+
inputWrapper: string;
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
fullWidth: {
|
|
185
|
+
true: {
|
|
186
|
+
root: string;
|
|
187
|
+
inputWrapper: string;
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
disabled: {
|
|
191
|
+
true: {
|
|
192
|
+
inputWrapper: string;
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
}, {
|
|
196
|
+
root: string;
|
|
197
|
+
label: string;
|
|
198
|
+
requiredMark: string;
|
|
199
|
+
inputWrapper: string[];
|
|
200
|
+
input: string[];
|
|
201
|
+
trigger: string[];
|
|
202
|
+
clearButton: string[];
|
|
203
|
+
popover: string[];
|
|
204
|
+
listBox: string;
|
|
205
|
+
listItem: string[];
|
|
206
|
+
emptyState: string;
|
|
207
|
+
helperText: string;
|
|
208
|
+
errorText: string;
|
|
209
|
+
chipsList: string;
|
|
210
|
+
chip: string[];
|
|
211
|
+
chipRemove: string[];
|
|
212
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
213
|
+
export type AutocompleteVariants = VariantProps<typeof autocompleteVariants>;
|
|
214
|
+
//# sourceMappingURL=autocomplete.variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/autocomplete.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA6G/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { BreadcrumbsProps } from './breadcrumbs.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Dashforge TW Breadcrumbs — router-agnostic navigation trail.
|
|
4
|
+
*
|
|
5
|
+
* Pure presentational. The consumer derives `items` from their routing
|
|
6
|
+
* layer (no automatic location read) — that keeps the component usable
|
|
7
|
+
* with React Router, Next.js App Router, TanStack Router, Wouter, etc.
|
|
8
|
+
*
|
|
9
|
+
* Truncation policy: when `items.length > maxItems > 0`, the middle is
|
|
10
|
+
* collapsed into a non-interactive `…` placeholder. `itemsBeforeCollapse`
|
|
11
|
+
* (default 1) and `itemsAfterCollapse` (default 1) control how many
|
|
12
|
+
* crumbs survive at each end — set both to 0 to keep only first+last,
|
|
13
|
+
* or higher to preserve more context.
|
|
14
|
+
*
|
|
15
|
+
* **A11y**:
|
|
16
|
+
* - `<nav aria-label="Breadcrumb">` landmark
|
|
17
|
+
* - `<ol>` semantic list (screen readers announce position-in-list)
|
|
18
|
+
* - `aria-current="page"` on the last (or `current: true`) crumb
|
|
19
|
+
* - Separator nodes carry `aria-hidden="true"` (decorative)
|
|
20
|
+
* - The truncation ellipsis is a `<span aria-label="More breadcrumbs">`
|
|
21
|
+
*/
|
|
22
|
+
export declare function Breadcrumbs(props: BreadcrumbsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
23
|
+
//# sourceMappingURL=Breadcrumbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.d.ts","sourceRoot":"","sources":["../../../../src/components/Breadcrumbs/Breadcrumbs.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,kDA8KlD"}
|