@moduix/react 2.0.0 → 2.2.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/README.md +100 -173
- package/dist/components/accordion/Accordion.css +47 -47
- package/dist/components/alert/Alert.css +62 -46
- package/dist/components/angle-slider/AngleSlider.css +65 -64
- package/dist/components/aspect-ratio/AspectRatio.css +2 -2
- package/dist/components/avatar/Avatar.css +26 -26
- package/dist/components/badge/Badge.css +34 -33
- package/dist/components/bleed/Bleed.css +13 -13
- package/dist/components/breadcrumbs/Breadcrumbs.css +29 -28
- package/dist/components/button/Button.css +81 -78
- package/dist/components/card/Card.css +46 -46
- package/dist/components/carousel/Carousel.css +57 -57
- package/dist/components/checkbox/Checkbox.css +40 -40
- package/dist/components/clipboard/Clipboard.css +68 -59
- package/dist/components/close-button/CloseButton.css +17 -17
- package/dist/components/collapsible/Collapsible.css +40 -38
- package/dist/components/color-picker/ColorPicker.css +162 -151
- package/dist/components/combobox/Combobox.css +120 -130
- package/dist/components/command-palette/CommandPalette.css +173 -177
- package/dist/components/command-palette/CommandPalette.module.js +0 -1
- package/dist/components/container/Container.css +12 -12
- package/dist/components/date-input/DateInput.css +41 -39
- package/dist/components/date-picker/DatePicker.css +181 -186
- package/dist/components/dialog/Dialog.css +84 -78
- package/dist/components/drawer/Drawer.css +126 -107
- package/dist/components/editable/Editable.css +64 -60
- package/dist/components/empty/Empty.css +25 -25
- package/dist/components/field/Field.css +46 -44
- package/dist/components/fieldset/Fieldset.css +22 -22
- package/dist/components/file-upload/FileUpload.css +128 -125
- package/dist/components/floating-panel/FloatingPanel.css +114 -110
- package/dist/components/floating-panel/FloatingPanel.d.ts +1 -1
- package/dist/components/heading/Heading.css +26 -26
- package/dist/components/highlight/Highlight.css +8 -8
- package/dist/components/hover-card/HoverCard.css +49 -47
- package/dist/components/image/Image.css +2 -2
- package/dist/components/image-cropper/ImageCropper.css +63 -56
- package/dist/components/input/Input.css +47 -46
- package/dist/components/input-group/InputGroup.css +71 -70
- package/dist/components/kbd/Kbd.css +16 -16
- package/dist/components/lightbox/Lightbox.css +80 -77
- package/dist/components/list/List.css +32 -32
- package/dist/components/listbox/Listbox.css +121 -116
- package/dist/components/marquee/Marquee.css +16 -16
- package/dist/components/menu/Menu.css +122 -118
- package/dist/components/native-select/NativeSelect.css +48 -42
- package/dist/components/number-input/NumberInput.css +62 -60
- package/dist/components/pagination/Pagination.css +35 -34
- package/dist/components/password-input/PasswordInput.css +60 -59
- package/dist/components/pin-input/PinInput.css +35 -35
- package/dist/components/popover/Popover.css +81 -76
- package/dist/components/progress-circular/ProgressCircular.css +20 -20
- package/dist/components/progress-linear/ProgressLinear.css +29 -28
- package/dist/components/qr-code/QrCode.css +39 -35
- package/dist/components/radio-group/RadioGroup.css +48 -48
- package/dist/components/rating-group/RatingGroup.css +30 -30
- package/dist/components/scroll-area/ScrollArea.css +34 -34
- package/dist/components/segment-group/SegmentGroup.css +37 -37
- package/dist/components/select/Select.css +137 -128
- package/dist/components/select/Select.d.ts +0 -5
- package/dist/components/select/Select.js +1 -9
- package/dist/components/select/Select.module.js +0 -1
- package/dist/components/separator/Separator.css +13 -13
- package/dist/components/sidebar/Sidebar.css +143 -142
- package/dist/components/signature-pad/SignaturePad.css +51 -50
- package/dist/components/skeleton/Skeleton.css +7 -5
- package/dist/components/slider/Slider.css +61 -59
- package/dist/components/spinner/Spinner.css +12 -12
- package/dist/components/split-button/SplitButton.css +12 -12
- package/dist/components/splitter/Splitter.css +63 -62
- package/dist/components/splitter/Splitter.js +2 -2
- package/dist/components/stack/Stack.css +4 -4
- package/dist/components/stack/Stack.js +3 -3
- package/dist/components/steps/Steps.css +89 -88
- package/dist/components/swap/Swap.css +7 -7
- package/dist/components/switch/Switch.css +59 -57
- package/dist/components/table/Table.css +58 -56
- package/dist/components/tabs/Tabs.css +64 -62
- package/dist/components/tag/Tag.css +45 -45
- package/dist/components/tags-input/TagsInput.css +93 -86
- package/dist/components/text/Text.css +23 -23
- package/dist/components/text/Text.js +1 -1
- package/dist/components/textarea/Textarea.css +27 -25
- package/dist/components/timer/Timer.css +38 -37
- package/dist/components/toast/Toast.css +94 -78
- package/dist/components/toggle/Toggle.css +66 -66
- package/dist/components/toggle-group/ToggleGroup.css +16 -16
- package/dist/components/tooltip/Tooltip.css +56 -52
- package/dist/components/tour/Tour.css +121 -117
- package/dist/components/tree-view/TreeView.css +91 -86
- package/dist/components/typeset/Typeset.css +317 -0
- package/dist/components/typeset/Typeset.d.ts +7 -0
- package/dist/components/typeset/Typeset.js +33 -0
- package/dist/components/typeset/Typeset.module.js +8 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/lib/moduix/presets/contrast.css +64 -0
- package/dist/lib/moduix/presets/dense.css +77 -0
- package/dist/lib/moduix/presets/soft.css +76 -0
- package/dist/lib/moduix/styles/reset.css +34 -1
- package/dist/lib/moduix/styles/style.css +230 -213
- package/dist/presets/contrast.d.ts +1 -0
- package/dist/presets/contrast.js +1 -0
- package/dist/presets/dense.d.ts +1 -0
- package/dist/presets/dense.js +1 -0
- package/dist/presets/soft.d.ts +1 -0
- package/dist/presets/soft.js +1 -0
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -1,124 +1,45 @@
|
|
|
1
|
-

|
|
1
|
+

|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@moduix/react)
|
|
4
|
+
[](./LICENSE.md)
|
|
4
5
|
[](https://www.typescriptlang.org/)
|
|
5
|
-
[](https://turbo.build/)
|
|
6
6
|
|
|
7
|
-
# moduix
|
|
7
|
+
# @moduix/react
|
|
8
8
|
|
|
9
|
-
React
|
|
10
|
-
[Ark UI](https://ark-ui.com/)
|
|
9
|
+
Polished React components for product interfaces, built on
|
|
10
|
+
[Ark UI](https://ark-ui.com/) and styled with native CSS.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
The package combines Ark's accessible interaction model with shadcn-inspired clarity: calm defaults,
|
|
13
|
+
explicit named parts, consistent states, and a token-first theme contract. No styling framework is
|
|
14
|
+
required.
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
[Documentation](https://moduix.dev/) ·
|
|
17
|
+
[Quick start](https://moduix.dev/docs/quick-start) ·
|
|
18
|
+
[Components](https://moduix.dev/docs/components) ·
|
|
19
|
+
[Tokens](https://moduix.dev/docs/tokens)
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
runtime surface, and CSS that can be owned by the application. The library is public and actively
|
|
20
|
-
developed around Ark UI primitives, shadcn-compatible source delivery, and practical defaults for
|
|
21
|
-
teams that need consistent interfaces.
|
|
21
|
+
## Highlights
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
- Ark-aligned composition, controlled and uncontrolled state, context, callbacks, and form behavior.
|
|
24
|
+
- Consistent `36px` primary controls and `32px` popup rows through shared size tokens.
|
|
25
|
+
- Native CSS, CSS Modules, cascade layers, semantic tokens, and component-level variables.
|
|
26
|
+
- Stable moduix `data-slot` hooks alongside Ark part and state attributes.
|
|
27
|
+
- Optional reset and curated `dense`, `soft`, and `contrast` presets.
|
|
28
|
+
- React 18 and 19 support.
|
|
29
|
+
- A matching hosted shadcn registry when source ownership is the better workflow.
|
|
24
30
|
|
|
25
|
-
|
|
26
|
-
reimplementing low-level interaction behavior.
|
|
27
|
-
- **Small dependency surface.** Ark UI is the only external UI primitive layer. The package
|
|
28
|
-
keeps the runtime stack intentionally small and does not bring a styling framework with it.
|
|
29
|
-
- **Two installation paths.** Use moduix as an npm package, or copy component source into your
|
|
30
|
-
project when direct ownership is more important than package-managed updates.
|
|
31
|
-
- **Composable API.** Components are exposed as named parts, so complex UI can be assembled
|
|
32
|
-
without hiding important structure.
|
|
33
|
-
- **Native CSS.** Styles are distributed as CSS, use CSS custom properties, and are designed to
|
|
34
|
-
work with your existing styling approach.
|
|
35
|
-
- **shadcn-compatible source delivery.** shadcn/ui remains a major inspiration for readable
|
|
36
|
-
component composition. moduix keeps that ownership model available through its registry.
|
|
31
|
+
## Install
|
|
37
32
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
moduix supports two installation paths:
|
|
41
|
-
|
|
42
|
-
- Install the library as a regular npm package when you want package-managed updates.
|
|
43
|
-
- Install component source into your own project with `shadcn` when you want direct ownership.
|
|
44
|
-
|
|
45
|
-
| Choose this path | When it fits best |
|
|
46
|
-
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
47
|
-
| npm package | You want the fastest setup, package-managed updates, imports from `@moduix/react`, and styles from `@moduix/react/style.css`. |
|
|
48
|
-
| `shadcn` copy-owned install | You want generated source files inside your app, direct local customization, and imports from `@/components/moduix/*`. |
|
|
49
|
-
|
|
50
|
-
### npm package
|
|
33
|
+
Install the package and its Ark UI peer dependency:
|
|
51
34
|
|
|
52
35
|
```bash
|
|
53
36
|
npm install @moduix/react @ark-ui/react
|
|
54
37
|
```
|
|
55
38
|
|
|
56
|
-
`react`, `react-dom`, and `@ark-ui/react` are peer dependencies
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
### shadcn copy-owned install
|
|
60
|
-
|
|
61
|
-
`shadcn` can install selected moduix components from the hosted registry directly into your
|
|
62
|
-
project. The files become part of your codebase instead of staying in `node_modules`.
|
|
63
|
-
|
|
64
|
-
Make sure your project resolves the `@/*` alias to `src/*` in both `tsconfig.json` and
|
|
65
|
-
`tsconfig.app.json`, and mirror it in your bundler config.
|
|
66
|
-
|
|
67
|
-
Create `components.json` in the project root when your app does not already have one:
|
|
68
|
-
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"$schema": "https://ui.shadcn.com/schema.json",
|
|
72
|
-
"style": "new-york",
|
|
73
|
-
"rsc": false,
|
|
74
|
-
"tsx": true,
|
|
75
|
-
"tailwind": {
|
|
76
|
-
"config": "",
|
|
77
|
-
"css": "src/index.css",
|
|
78
|
-
"baseColor": "neutral",
|
|
79
|
-
"cssVariables": true,
|
|
80
|
-
"prefix": ""
|
|
81
|
-
},
|
|
82
|
-
"iconLibrary": "lucide",
|
|
83
|
-
"rtl": false,
|
|
84
|
-
"aliases": {
|
|
85
|
-
"components": "@/components",
|
|
86
|
-
"utils": "@/lib/utils",
|
|
87
|
-
"ui": "@/components/ui",
|
|
88
|
-
"lib": "@/lib",
|
|
89
|
-
"hooks": "@/hooks"
|
|
90
|
-
},
|
|
91
|
-
"registries": {
|
|
92
|
-
"@moduix-react": "https://moduix.dev/r/react/{name}.json"
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
npx shadcn@latest add @moduix-react/button
|
|
99
|
-
npx shadcn@latest add @moduix-react/accordion
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
The registry install also pulls in the shared moduix foundation files those components need, such as
|
|
103
|
-
styles, icons, and small utilities.
|
|
104
|
-
|
|
105
|
-
Import the generated foundation stylesheet once in your application entry point:
|
|
106
|
-
|
|
107
|
-
```tsx
|
|
108
|
-
import '@/lib/moduix/styles/style.css';
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
If you want the optional reset in the copy-owned path, import it explicitly before the main
|
|
112
|
-
stylesheet:
|
|
113
|
-
|
|
114
|
-
```tsx
|
|
115
|
-
import '@/lib/moduix/styles/reset.css';
|
|
116
|
-
import '@/lib/moduix/styles/style.css';
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
With the aliases above, generated files land in `src/components/moduix/*` and `src/lib/moduix/*`.
|
|
39
|
+
`react`, `react-dom`, and `@ark-ui/react` are peer dependencies, so the package does not ship
|
|
40
|
+
duplicate framework or primitive runtimes.
|
|
120
41
|
|
|
121
|
-
##
|
|
42
|
+
## Add Styles
|
|
122
43
|
|
|
123
44
|
Import the required foundation stylesheet once in your application entry point:
|
|
124
45
|
|
|
@@ -126,17 +47,19 @@ Import the required foundation stylesheet once in your application entry point:
|
|
|
126
47
|
import '@moduix/react/style.css';
|
|
127
48
|
```
|
|
128
49
|
|
|
129
|
-
This
|
|
130
|
-
CSS
|
|
50
|
+
This entrypoint provides shared design tokens and base styles. Component imports bring along their
|
|
51
|
+
own CSS.
|
|
131
52
|
|
|
132
|
-
|
|
53
|
+
The reset is optional and intentionally separate:
|
|
133
54
|
|
|
134
55
|
```tsx
|
|
135
56
|
import '@moduix/react/reset.css';
|
|
136
57
|
import '@moduix/react/style.css';
|
|
137
58
|
```
|
|
138
59
|
|
|
139
|
-
|
|
60
|
+
## Use Components
|
|
61
|
+
|
|
62
|
+
Import public components from the package barrel and compose their named parts:
|
|
140
63
|
|
|
141
64
|
```tsx
|
|
142
65
|
import { Button, Dialog } from '@moduix/react';
|
|
@@ -145,12 +68,20 @@ export function Example() {
|
|
|
145
68
|
return (
|
|
146
69
|
<Dialog.Root>
|
|
147
70
|
<Dialog.Trigger asChild>
|
|
148
|
-
<Button>Open
|
|
71
|
+
<Button>Open settings</Button>
|
|
149
72
|
</Dialog.Trigger>
|
|
150
73
|
<Dialog.Backdrop />
|
|
151
74
|
<Dialog.Positioner>
|
|
152
75
|
<Dialog.Content>
|
|
153
|
-
<Dialog.
|
|
76
|
+
<Dialog.Header>
|
|
77
|
+
<Dialog.Title>Project settings</Dialog.Title>
|
|
78
|
+
<Dialog.Description>Update how this workspace behaves.</Dialog.Description>
|
|
79
|
+
</Dialog.Header>
|
|
80
|
+
<Dialog.Footer>
|
|
81
|
+
<Dialog.CloseTrigger asChild>
|
|
82
|
+
<Button variant="outline">Done</Button>
|
|
83
|
+
</Dialog.CloseTrigger>
|
|
84
|
+
</Dialog.Footer>
|
|
154
85
|
</Dialog.Content>
|
|
155
86
|
</Dialog.Positioner>
|
|
156
87
|
</Dialog.Root>
|
|
@@ -158,95 +89,91 @@ export function Example() {
|
|
|
158
89
|
}
|
|
159
90
|
```
|
|
160
91
|
|
|
161
|
-
|
|
162
|
-
|
|
92
|
+
moduix keeps important Ark anatomy visible. Higher-level convenience parts are documented as the
|
|
93
|
+
recommended path where they exist, while low-level composition remains available for advanced
|
|
94
|
+
cases.
|
|
163
95
|
|
|
164
|
-
##
|
|
96
|
+
## Theme the System
|
|
165
97
|
|
|
166
|
-
|
|
167
|
-
|
|
98
|
+
Theme values are CSS custom properties. Change broad semantic decisions first and use component
|
|
99
|
+
aliases for deliberate exceptions:
|
|
168
100
|
|
|
169
101
|
```css
|
|
170
102
|
:root {
|
|
171
|
-
--
|
|
172
|
-
--
|
|
103
|
+
--moduix-primary: oklch(0.52 0.18 145);
|
|
104
|
+
--moduix-radius: 0.75rem;
|
|
105
|
+
--moduix-size-md: 36px;
|
|
106
|
+
--moduix-size-sm: 32px;
|
|
173
107
|
}
|
|
174
|
-
```
|
|
175
108
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
@layer ui.reset, ui.tokens, ui.base, ui.components;
|
|
109
|
+
.compact-toolbar {
|
|
110
|
+
--moduix-button-size-md: 32px;
|
|
111
|
+
}
|
|
180
112
|
```
|
|
181
113
|
|
|
182
|
-
|
|
183
|
-
classes, or component-level variables.
|
|
114
|
+
The token hierarchy is:
|
|
184
115
|
|
|
185
|
-
|
|
116
|
+
1. theme primitives such as `--moduix-primary`, `--moduix-spacing-2`, `--moduix-size-md`, and `--moduix-radius`;
|
|
117
|
+
2. semantic aliases such as `--moduix-color-primary`, `--moduix-spacing-md`, and `--moduix-radius-md`;
|
|
118
|
+
3. shared family defaults such as `--moduix-popup-item-min-height` and `--moduix-focus-ring-width`;
|
|
119
|
+
4. component aliases such as `--moduix-input-height` and `--moduix-select-item-min-height`.
|
|
186
120
|
|
|
187
|
-
|
|
188
|
-
Button, Checkbox, Combobox, Dialog, Drawer, Field, FileUpload, Menu, NumberInput, Popover,
|
|
189
|
-
QrCode, Select, Tabs, Toast, Tooltip, TreeView, and supporting layout and display primitives.
|
|
121
|
+
Library styles use predictable cascade layers:
|
|
190
122
|
|
|
191
|
-
|
|
123
|
+
```css
|
|
124
|
+
@layer moduix.reset, moduix.tokens, moduix.base, moduix.components;
|
|
125
|
+
```
|
|
192
126
|
|
|
193
|
-
-
|
|
194
|
-
|
|
195
|
-
- React package README: `packages/react/README.md`
|
|
196
|
-
- Docs app README: `apps/docs/README.md`
|
|
127
|
+
Components also expose `className`, `data-slot`, and the Ark `data-scope`, `data-part`, and
|
|
128
|
+
state attributes supported by their primitives.
|
|
197
129
|
|
|
198
|
-
##
|
|
130
|
+
## Optional Presets
|
|
199
131
|
|
|
200
|
-
|
|
132
|
+
Import one preset after `style.css` and activate it on the document root:
|
|
201
133
|
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
npm run dev
|
|
134
|
+
```tsx
|
|
135
|
+
import '@moduix/react/style.css';
|
|
136
|
+
import '@moduix/react/presets/soft.css';
|
|
206
137
|
```
|
|
207
138
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
- [Ark UI](https://ark-ui.com/) for the composition and accessibility primitives now shaping the library contract.
|
|
213
|
-
- [shadcn/ui](https://ui.shadcn.com/) for the API inspiration and the culture of practical,
|
|
214
|
-
readable component composition.
|
|
215
|
-
- [Tailwind CSS](https://tailwindcss.com/) for the reset.css implementation.
|
|
216
|
-
- [Fumadocs](https://fumadocs.dev/) for the documentation foundation.
|
|
217
|
-
- [TanStack](https://tanstack.com/) for the application tooling used by the docs.
|
|
218
|
-
- [Voidzero](https://voidzero.dev/) for the JavaScript tooling used by the workspace.
|
|
139
|
+
```html
|
|
140
|
+
<html data-moduix-theme="soft"></html>
|
|
141
|
+
```
|
|
219
142
|
|
|
220
|
-
|
|
143
|
+
Available presets are `dense`, `soft`, and `contrast`. See
|
|
144
|
+
[Themes](https://moduix.dev/docs/themes) before combining presets or creating a reusable custom
|
|
145
|
+
theme.
|
|
221
146
|
|
|
222
|
-
|
|
223
|
-
improvements, and focused component improvements.
|
|
147
|
+
## Prefer to Own the Source?
|
|
224
148
|
|
|
225
|
-
|
|
149
|
+
The moduix registry uses the shadcn distribution format while preserving the same Ark-aligned
|
|
150
|
+
component contracts. Create the ready-to-use `components.json` from the
|
|
151
|
+
[complete Quick Start](https://moduix.dev/docs/quick-start), then add the components you need:
|
|
226
152
|
|
|
227
|
-
|
|
153
|
+
```bash
|
|
154
|
+
npx shadcn@latest add @moduix-react/button @moduix-react/dialog
|
|
155
|
+
```
|
|
228
156
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
157
|
+
Generated files are installed under `@/components/moduix/*` and `@/lib/moduix/*`. Read the
|
|
158
|
+
[complete Quick Start](https://moduix.dev/docs/quick-start) for alias setup, registry inspection,
|
|
159
|
+
dry runs, and generated stylesheet imports.
|
|
232
160
|
|
|
233
|
-
|
|
161
|
+
## Acknowledgements
|
|
234
162
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
163
|
+
- [Ark UI](https://ark-ui.com/) provides the primitive behavior and composition model.
|
|
164
|
+
- [Chakra UI](https://chakra-ui.com/) informs Ark-aligned ergonomics and design-system craft.
|
|
165
|
+
- [shadcn/ui](https://ui.shadcn.com/) inspires open-code delivery, beautiful defaults, and practical
|
|
166
|
+
documentation.
|
|
167
|
+
- [UnoCSS](https://unocss.dev/) and [Tailwind CSS](https://tailwindcss.com/) provide foundations
|
|
168
|
+
adapted by the optional reset.
|
|
238
169
|
|
|
239
|
-
|
|
170
|
+
## Links
|
|
240
171
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
```
|
|
172
|
+
- [Documentation](https://moduix.dev/)
|
|
173
|
+
- [npm package](https://www.npmjs.com/package/@moduix/react)
|
|
174
|
+
- [Source repository](https://github.com/Blinks44/moduix)
|
|
175
|
+
- [Issues](https://github.com/Blinks44/moduix/issues)
|
|
246
176
|
|
|
247
|
-
|
|
248
|
-
local component notes, public docs, and registry output so the package and docs stay in sync.
|
|
177
|
+
## License
|
|
249
178
|
|
|
250
|
-
|
|
251
|
-
agent-assisted changes should still preserve the library's direct Ark-first component contracts,
|
|
252
|
-
small APIs, and readable implementation style.
|
|
179
|
+
[MIT](./LICENSE.md)
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
@layer
|
|
1
|
+
@layer moduix.components {
|
|
2
2
|
@keyframes tIMeYW_accordion-item-content-open {
|
|
3
3
|
from {
|
|
4
4
|
height: 0;
|
|
5
|
-
opacity: var(--accordion-item-content-closed-opacity, .01);
|
|
5
|
+
opacity: var(--moduix-accordion-item-content-closed-opacity, .01);
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
to {
|
|
9
9
|
height: var(--height);
|
|
10
|
-
opacity: var(--accordion-item-content-open-opacity, 1);
|
|
10
|
+
opacity: var(--moduix-accordion-item-content-open-opacity, 1);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
@keyframes tIMeYW_accordion-item-content-closed {
|
|
15
15
|
from {
|
|
16
16
|
height: var(--height);
|
|
17
|
-
opacity: var(--accordion-item-content-open-opacity, 1);
|
|
17
|
+
opacity: var(--moduix-accordion-item-content-open-opacity, 1);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
to {
|
|
21
21
|
height: 0;
|
|
22
|
-
opacity: var(--accordion-item-content-closed-opacity, .01);
|
|
22
|
+
opacity: var(--moduix-accordion-item-content-closed-opacity, .01);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
@keyframes tIMeYW_accordion-item-content-open-horizontal {
|
|
27
27
|
from {
|
|
28
28
|
width: 0;
|
|
29
|
-
opacity: var(--accordion-item-content-closed-opacity, .01);
|
|
29
|
+
opacity: var(--moduix-accordion-item-content-closed-opacity, .01);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
to {
|
|
33
33
|
width: var(--width);
|
|
34
|
-
opacity: var(--accordion-item-content-open-opacity, 1);
|
|
34
|
+
opacity: var(--moduix-accordion-item-content-open-opacity, 1);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
@keyframes tIMeYW_accordion-item-content-closed-horizontal {
|
|
39
39
|
from {
|
|
40
40
|
width: var(--width);
|
|
41
|
-
opacity: var(--accordion-item-content-open-opacity, 1);
|
|
41
|
+
opacity: var(--moduix-accordion-item-content-open-opacity, 1);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
to {
|
|
45
45
|
width: 0;
|
|
46
|
-
opacity: var(--accordion-item-content-closed-opacity, .01);
|
|
46
|
+
opacity: var(--moduix-accordion-item-content-closed-opacity, .01);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
.tIMeYW_root {
|
|
51
51
|
box-sizing: border-box;
|
|
52
|
-
width: var(--accordion-width, 100%);
|
|
53
|
-
max-width: var(--accordion-max-width, 100%);
|
|
52
|
+
width: var(--moduix-accordion-width, 100%);
|
|
53
|
+
max-width: var(--moduix-accordion-max-width, 100%);
|
|
54
54
|
min-width: 0;
|
|
55
|
-
color: var(--accordion-color, var(--color-foreground));
|
|
55
|
+
color: var(--moduix-accordion-color, var(--moduix-color-foreground));
|
|
56
56
|
flex-direction: column;
|
|
57
57
|
display: flex;
|
|
58
58
|
|
|
59
59
|
&[data-orientation="horizontal"] {
|
|
60
|
-
width: var(--accordion-horizontal-width, auto);
|
|
61
|
-
height: var(--accordion-horizontal-height, 20rem);
|
|
62
|
-
max-height: var(--accordion-horizontal-max-height, 100%);
|
|
60
|
+
width: var(--moduix-accordion-horizontal-width, auto);
|
|
61
|
+
height: var(--moduix-accordion-horizontal-height, 20rem);
|
|
62
|
+
max-height: var(--moduix-accordion-horizontal-max-height, 100%);
|
|
63
63
|
flex-direction: row;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -68,16 +68,16 @@
|
|
|
68
68
|
overflow-anchor: none;
|
|
69
69
|
|
|
70
70
|
&[data-orientation="vertical"]:not(:last-child) {
|
|
71
|
-
border-bottom: var(--accordion-item-border-width, var(--border-width-sm)) solid
|
|
72
|
-
var(--accordion-item-border-color, var(--color-border));
|
|
71
|
+
border-bottom: var(--moduix-accordion-item-border-width, var(--moduix-border-width-sm)) solid
|
|
72
|
+
var(--moduix-accordion-item-border-color, var(--moduix-color-border));
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
&[data-orientation="horizontal"] {
|
|
76
76
|
display: flex;
|
|
77
77
|
|
|
78
78
|
&:not(:last-child) {
|
|
79
|
-
border-inline-end: var(--accordion-item-border-width, var(--border-width-sm))
|
|
80
|
-
var(--accordion-item-border-color, var(--color-border));
|
|
79
|
+
border-inline-end: var(--moduix-accordion-item-border-width, var(--moduix-border-width-sm))
|
|
80
|
+
solid var(--moduix-accordion-item-border-color, var(--moduix-color-border));
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
}
|
|
@@ -86,20 +86,20 @@
|
|
|
86
86
|
box-sizing: border-box;
|
|
87
87
|
justify-content: space-between;
|
|
88
88
|
align-items: center;
|
|
89
|
-
gap: var(--accordion-trigger-gap, var(--spacing-4));
|
|
89
|
+
gap: var(--moduix-accordion-trigger-gap, var(--moduix-spacing-4));
|
|
90
90
|
width: 100%;
|
|
91
|
-
padding-block: var(--accordion-trigger-padding-y, var(--spacing-2));
|
|
92
|
-
padding-inline: var(--accordion-trigger-padding-x, var(--spacing-3));
|
|
93
|
-
background-color: var(--accordion-trigger-bg, var(--color-muted));
|
|
91
|
+
padding-block: var(--moduix-accordion-trigger-padding-y, var(--moduix-spacing-2));
|
|
92
|
+
padding-inline: var(--moduix-accordion-trigger-padding-x, var(--moduix-spacing-3));
|
|
93
|
+
background-color: var(--moduix-accordion-trigger-bg, var(--moduix-color-muted));
|
|
94
94
|
color: inherit;
|
|
95
95
|
font: inherit;
|
|
96
|
-
font-size: var(--accordion-trigger-font-size, var(--text-md));
|
|
97
|
-
line-height: var(--accordion-trigger-line-height, var(--line-height-text-md));
|
|
96
|
+
font-size: var(--moduix-accordion-trigger-font-size, var(--moduix-text-md));
|
|
97
|
+
line-height: var(--moduix-accordion-trigger-line-height, var(--moduix-line-height-text-md));
|
|
98
98
|
text-align: left;
|
|
99
99
|
user-select: none;
|
|
100
100
|
cursor: pointer;
|
|
101
|
-
transition: background-color var(--transition-default),
|
|
102
|
-
color var(--transition-default);
|
|
101
|
+
transition: background-color var(--moduix-transition-default),
|
|
102
|
+
color var(--moduix-transition-default);
|
|
103
103
|
border: 0;
|
|
104
104
|
outline: 0;
|
|
105
105
|
margin: 0;
|
|
@@ -107,25 +107,25 @@
|
|
|
107
107
|
|
|
108
108
|
@media (hover: hover) {
|
|
109
109
|
&:hover {
|
|
110
|
-
background-color: var(--accordion-trigger-bg-hover, var(--color-accent));
|
|
110
|
+
background-color: var(--moduix-accordion-trigger-bg-hover, var(--moduix-color-accent));
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
&:focus-visible {
|
|
115
115
|
z-index: 1;
|
|
116
|
-
outline: var(--accordion-focus-ring-width, var(--border-width-md))
|
|
117
|
-
var(--accordion-focus-ring-color, var(--color-ring));
|
|
118
|
-
outline-offset: calc(var(--accordion-focus-ring-offset, var(--border-width-sm)) * -1);
|
|
116
|
+
outline: var(--moduix-accordion-focus-ring-width, var(--moduix-focus-ring-width, var(--moduix-border-width-md)))
|
|
117
|
+
solid var(--moduix-accordion-focus-ring-color, var(--moduix-color-ring));
|
|
118
|
+
outline-offset: calc(var(--moduix-accordion-focus-ring-offset, var(--moduix-border-width-sm)) * -1);
|
|
119
119
|
position: relative;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
&:is([disabled], [data-disabled]) {
|
|
123
123
|
cursor: default;
|
|
124
|
-
opacity: var(--accordion-disabled-opacity, var(--opacity-disabled));
|
|
124
|
+
opacity: var(--moduix-accordion-disabled-opacity, var(--moduix-opacity-disabled));
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
&[data-orientation="horizontal"] {
|
|
128
|
-
width: var(--accordion-horizontal-trigger-width, 2.5rem);
|
|
128
|
+
width: var(--moduix-accordion-horizontal-trigger-width, 2.5rem);
|
|
129
129
|
writing-mode: sideways-lr;
|
|
130
130
|
justify-content: center;
|
|
131
131
|
height: 100%;
|
|
@@ -134,9 +134,9 @@
|
|
|
134
134
|
|
|
135
135
|
.tIMeYW_itemIndicator {
|
|
136
136
|
box-sizing: border-box;
|
|
137
|
-
width: var(--accordion-icon-size,
|
|
138
|
-
height: var(--accordion-icon-size,
|
|
139
|
-
transition: transform var(--accordion-icon-transition, var(--transition-default));
|
|
137
|
+
width: var(--moduix-accordion-icon-size, var(--moduix-spacing-3));
|
|
138
|
+
height: var(--moduix-accordion-icon-size, var(--moduix-spacing-3));
|
|
139
|
+
transition: transform var(--moduix-accordion-icon-transition, var(--moduix-transition-default));
|
|
140
140
|
flex-shrink: 0;
|
|
141
141
|
justify-content: center;
|
|
142
142
|
align-items: center;
|
|
@@ -148,15 +148,15 @@
|
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
&[data-state="open"] {
|
|
151
|
-
transform: var(--accordion-icon-open-transform, rotate(45deg) scale(1.1));
|
|
151
|
+
transform: var(--moduix-accordion-icon-open-transform, rotate(45deg) scale(1.1));
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
.tIMeYW_itemContent {
|
|
156
156
|
box-sizing: border-box;
|
|
157
|
-
color: var(--accordion-item-content-color, var(--color-muted-foreground));
|
|
158
|
-
font-size: var(--accordion-item-content-font-size, var(--text-md));
|
|
159
|
-
line-height: var(--accordion-item-content-line-height, var(--line-height-text-md));
|
|
157
|
+
color: var(--moduix-accordion-item-content-color, var(--moduix-color-muted-foreground));
|
|
158
|
+
font-size: var(--moduix-accordion-item-content-font-size, var(--moduix-text-md));
|
|
159
|
+
line-height: var(--moduix-accordion-item-content-line-height, var(--moduix-line-height-text-md));
|
|
160
160
|
overflow: hidden;
|
|
161
161
|
|
|
162
162
|
&[hidden]:not([hidden="until-found"]) {
|
|
@@ -165,33 +165,33 @@
|
|
|
165
165
|
|
|
166
166
|
&[data-state="open"][data-orientation="vertical"] {
|
|
167
167
|
animation: tIMeYW_accordion-item-content-open
|
|
168
|
-
var(--accordion-item-content-transition, var(--transition-default));
|
|
168
|
+
var(--moduix-accordion-item-content-transition, var(--moduix-transition-default));
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
&[data-state="closed"][data-orientation="vertical"] {
|
|
172
172
|
animation: tIMeYW_accordion-item-content-closed
|
|
173
|
-
var(--accordion-item-content-transition, var(--transition-default));
|
|
173
|
+
var(--moduix-accordion-item-content-transition, var(--moduix-transition-default));
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
&[data-state="open"][data-orientation="horizontal"] {
|
|
177
177
|
animation: tIMeYW_accordion-item-content-open-horizontal
|
|
178
|
-
var(--accordion-item-content-transition, var(--transition-default));
|
|
178
|
+
var(--moduix-accordion-item-content-transition, var(--moduix-transition-default));
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
&[data-state="closed"][data-orientation="horizontal"] {
|
|
182
182
|
animation: tIMeYW_accordion-item-content-closed-horizontal
|
|
183
|
-
var(--accordion-item-content-transition, var(--transition-default));
|
|
183
|
+
var(--moduix-accordion-item-content-transition, var(--moduix-transition-default));
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
&[data-orientation="horizontal"] > * {
|
|
187
|
-
width: var(--accordion-horizontal-content-width, 16rem);
|
|
187
|
+
width: var(--moduix-accordion-horizontal-content-width, 16rem);
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
.tIMeYW_itemBody {
|
|
192
|
-
gap: var(--accordion-item-body-gap, var(--spacing-3));
|
|
192
|
+
gap: var(--moduix-accordion-item-body-gap, var(--moduix-spacing-3));
|
|
193
193
|
min-width: 0;
|
|
194
|
-
padding: var(--accordion-item-body-padding, var(--spacing-3));
|
|
194
|
+
padding: var(--moduix-accordion-item-body-padding, var(--moduix-spacing-3));
|
|
195
195
|
display: grid;
|
|
196
196
|
}
|
|
197
197
|
}
|