@moduix/react 2.0.0 → 2.1.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.
Files changed (88) hide show
  1. package/README.md +100 -172
  2. package/dist/components/accordion/Accordion.css +4 -4
  3. package/dist/components/alert/Alert.css +5 -5
  4. package/dist/components/angle-slider/AngleSlider.css +9 -9
  5. package/dist/components/badge/Badge.css +11 -10
  6. package/dist/components/breadcrumbs/Breadcrumbs.css +8 -7
  7. package/dist/components/button/Button.css +24 -24
  8. package/dist/components/card/Card.css +1 -1
  9. package/dist/components/carousel/Carousel.css +17 -17
  10. package/dist/components/checkbox/Checkbox.css +13 -13
  11. package/dist/components/clipboard/Clipboard.css +10 -10
  12. package/dist/components/close-button/CloseButton.css +7 -7
  13. package/dist/components/collapsible/Collapsible.css +4 -4
  14. package/dist/components/color-picker/ColorPicker.css +31 -24
  15. package/dist/components/combobox/Combobox.css +36 -49
  16. package/dist/components/command-palette/CommandPalette.css +29 -28
  17. package/dist/components/date-input/DateInput.css +5 -4
  18. package/dist/components/date-picker/DatePicker.css +40 -47
  19. package/dist/components/dialog/Dialog.css +5 -4
  20. package/dist/components/drawer/Drawer.css +6 -5
  21. package/dist/components/editable/Editable.css +12 -10
  22. package/dist/components/empty/Empty.css +2 -2
  23. package/dist/components/field/Field.css +6 -4
  24. package/dist/components/file-upload/FileUpload.css +22 -22
  25. package/dist/components/floating-panel/FloatingPanel.css +30 -30
  26. package/dist/components/floating-panel/FloatingPanel.d.ts +1 -1
  27. package/dist/components/highlight/Highlight.css +1 -1
  28. package/dist/components/hover-card/HoverCard.css +5 -5
  29. package/dist/components/image-cropper/ImageCropper.css +15 -11
  30. package/dist/components/input/Input.css +9 -9
  31. package/dist/components/input-group/InputGroup.css +29 -29
  32. package/dist/components/kbd/Kbd.css +2 -2
  33. package/dist/components/lightbox/Lightbox.css +7 -7
  34. package/dist/components/listbox/Listbox.css +34 -32
  35. package/dist/components/menu/Menu.css +40 -37
  36. package/dist/components/native-select/NativeSelect.css +17 -12
  37. package/dist/components/number-input/NumberInput.css +17 -18
  38. package/dist/components/pagination/Pagination.css +11 -11
  39. package/dist/components/password-input/PasswordInput.css +4 -4
  40. package/dist/components/pin-input/PinInput.css +6 -6
  41. package/dist/components/popover/Popover.css +9 -8
  42. package/dist/components/progress-circular/ProgressCircular.css +2 -2
  43. package/dist/components/progress-linear/ProgressLinear.css +1 -1
  44. package/dist/components/qr-code/QrCode.css +7 -7
  45. package/dist/components/radio-group/RadioGroup.css +12 -12
  46. package/dist/components/rating-group/RatingGroup.css +7 -7
  47. package/dist/components/scroll-area/ScrollArea.css +5 -5
  48. package/dist/components/segment-group/SegmentGroup.css +4 -4
  49. package/dist/components/select/Select.css +59 -42
  50. package/dist/components/select/Select.js +1 -1
  51. package/dist/components/separator/Separator.css +6 -6
  52. package/dist/components/sidebar/Sidebar.css +33 -32
  53. package/dist/components/signature-pad/SignaturePad.css +7 -6
  54. package/dist/components/skeleton/Skeleton.css +1 -1
  55. package/dist/components/slider/Slider.css +13 -11
  56. package/dist/components/spinner/Spinner.css +5 -5
  57. package/dist/components/split-button/SplitButton.css +10 -10
  58. package/dist/components/splitter/Splitter.css +6 -6
  59. package/dist/components/steps/Steps.css +20 -19
  60. package/dist/components/switch/Switch.css +15 -15
  61. package/dist/components/tabs/Tabs.css +19 -19
  62. package/dist/components/tag/Tag.css +14 -14
  63. package/dist/components/tags-input/TagsInput.css +17 -16
  64. package/dist/components/textarea/Textarea.css +4 -3
  65. package/dist/components/timer/Timer.css +7 -7
  66. package/dist/components/toast/Toast.css +16 -15
  67. package/dist/components/toggle/Toggle.css +20 -20
  68. package/dist/components/tooltip/Tooltip.css +9 -8
  69. package/dist/components/tour/Tour.css +17 -17
  70. package/dist/components/tree-view/TreeView.css +23 -20
  71. package/dist/components/typeset/Typeset.css +317 -0
  72. package/dist/components/typeset/Typeset.d.ts +7 -0
  73. package/dist/components/typeset/Typeset.js +33 -0
  74. package/dist/components/typeset/Typeset.module.js +8 -0
  75. package/dist/index.d.ts +3 -1
  76. package/dist/index.js +3 -1
  77. package/dist/lib/moduix/presets/contrast.css +65 -0
  78. package/dist/lib/moduix/presets/dense.css +78 -0
  79. package/dist/lib/moduix/presets/soft.css +77 -0
  80. package/dist/lib/moduix/styles/reset.css +33 -0
  81. package/dist/lib/moduix/styles/style.css +17 -4
  82. package/dist/presets/contrast.d.ts +1 -0
  83. package/dist/presets/contrast.js +1 -0
  84. package/dist/presets/dense.d.ts +1 -0
  85. package/dist/presets/dense.js +1 -0
  86. package/dist/presets/soft.d.ts +1 -0
  87. package/dist/presets/soft.js +1 -0
  88. package/package.json +4 -1
@@ -59,7 +59,7 @@
59
59
 
60
60
  ._5wc7ja_content {
61
61
  --arrow-background: var(--tour-arrow-background, var(--tour-bg, var(--color-popover)));
62
- --arrow-size: var(--tour-arrow-size, .625rem);
62
+ --arrow-size: var(--tour-arrow-size, var(--spacing-2-5));
63
63
  box-sizing: border-box;
64
64
  z-index: calc(var(--tour-z-index, var(--z-modal)) + var(--layer-index, 0));
65
65
  gap: var(--tour-gap, var(--spacing-1));
@@ -108,7 +108,7 @@
108
108
 
109
109
  ._5wc7ja_arrow {
110
110
  --arrow-background: var(--tour-arrow-background, var(--tour-bg, var(--color-popover)));
111
- --arrow-size: var(--tour-arrow-size, .625rem);
111
+ --arrow-size: var(--tour-arrow-size, var(--spacing-2-5));
112
112
  }
113
113
 
114
114
  ._5wc7ja_arrowTip {
@@ -144,8 +144,8 @@
144
144
 
145
145
  ._5wc7ja_closeTrigger {
146
146
  box-sizing: border-box;
147
- width: var(--tour-close-trigger-size, 1.75rem);
148
- height: var(--tour-close-trigger-size, 1.75rem);
147
+ width: var(--tour-close-trigger-size, var(--spacing-7));
148
+ height: var(--tour-close-trigger-size, var(--spacing-7));
149
149
  border-radius: var(--tour-close-trigger-radius, var(--radius-md));
150
150
  background: var(--tour-close-trigger-bg, transparent);
151
151
  color: var(--tour-close-trigger-color, var(--color-muted-foreground));
@@ -162,8 +162,8 @@
162
162
  inset-inline-end: var(--tour-close-trigger-offset, var(--spacing-4));
163
163
 
164
164
  & :where(svg) {
165
- width: var(--tour-close-trigger-icon-size, .75rem);
166
- height: var(--tour-close-trigger-icon-size, .75rem);
165
+ width: var(--tour-close-trigger-icon-size, var(--spacing-3));
166
+ height: var(--tour-close-trigger-icon-size, var(--spacing-3));
167
167
  }
168
168
 
169
169
  @media (hover: hover) {
@@ -174,16 +174,16 @@
174
174
  }
175
175
 
176
176
  &:focus-visible {
177
- outline: var(--tour-focus-ring-width, var(--border-width-sm)) solid
178
- var(--tour-focus-ring-color, var(--color-ring));
179
- outline-offset: calc(var(--tour-focus-ring-width, var(--border-width-sm)) * -1);
177
+ outline: var(--tour-focus-ring-width, var(--focus-ring-inset-width, var(--border-width-sm)))
178
+ solid var(--tour-focus-ring-color, var(--color-ring));
179
+ outline-offset: calc(var(--tour-focus-ring-width, var(--focus-ring-inset-width, var(--border-width-sm))) * -1);
180
180
  }
181
181
  }
182
182
 
183
183
  ._5wc7ja_closeIcon {
184
- --close-button-size: var(--tour-close-trigger-size, 1.75rem);
184
+ --close-button-size: var(--tour-close-trigger-size, var(--spacing-7));
185
185
  --close-button-radius: var(--tour-close-trigger-radius, var(--radius-md));
186
- --close-button-icon-size: var(--tour-close-trigger-icon-size, .75rem);
186
+ --close-button-icon-size: var(--tour-close-trigger-icon-size, var(--spacing-3));
187
187
  --close-button-bg: var(--tour-close-trigger-bg, transparent);
188
188
  --close-button-bg-hover: var(--tour-close-trigger-bg-hover, var(--color-accent));
189
189
  --close-button-color: var(--tour-close-trigger-color, var(--color-muted-foreground));
@@ -205,12 +205,12 @@
205
205
 
206
206
  ._5wc7ja_actionTrigger {
207
207
  box-sizing: border-box;
208
- min-height: var(--tour-action-height, 2rem);
208
+ min-height: var(--tour-action-height, var(--size-sm));
209
209
  justify-content: center;
210
210
  align-items: center;
211
211
  gap: var(--tour-action-gap, var(--spacing-2));
212
- padding-block: var(--tour-action-padding-y, .375rem);
213
- padding-inline: var(--tour-action-padding-x, .75rem);
212
+ padding-block: var(--tour-action-padding-y, var(--spacing-1-5));
213
+ padding-inline: var(--tour-action-padding-x, var(--spacing-3));
214
214
  border: var(--tour-action-border-width, var(--border-width-sm)) solid
215
215
  var(--tour-action-border-color, var(--color-border));
216
216
  border-radius: var(--tour-action-radius, var(--radius-md));
@@ -246,9 +246,9 @@
246
246
  }
247
247
 
248
248
  &:focus-visible {
249
- outline: var(--tour-focus-ring-width, var(--border-width-sm)) solid
250
- var(--tour-focus-ring-color, var(--color-ring));
251
- outline-offset: calc(var(--tour-focus-ring-width, var(--border-width-sm)) * -1);
249
+ outline: var(--tour-focus-ring-width, var(--focus-ring-inset-width, var(--border-width-sm)))
250
+ solid var(--tour-focus-ring-color, var(--color-ring));
251
+ outline-offset: calc(var(--tour-focus-ring-width, var(--focus-ring-inset-width, var(--border-width-sm))) * -1);
252
252
  }
253
253
 
254
254
  &[data-disabled], &:disabled {
@@ -40,7 +40,7 @@
40
40
  box-sizing: border-box;
41
41
  width: 100%;
42
42
  min-width: 0;
43
- min-height: var(--tree-view-item-min-height, 2rem);
43
+ min-height: var(--tree-view-item-min-height, var(--size-sm));
44
44
  align-items: center;
45
45
  gap: var(--tree-view-item-gap, var(--spacing-2));
46
46
  border: var(--tree-view-item-border-width, 0) solid
@@ -51,8 +51,9 @@
51
51
  color: var(--tree-view-item-color, var(--tree-view-color, var(--color-foreground)));
52
52
  cursor: pointer;
53
53
  font: inherit;
54
- outline: var(--tree-view-focus-ring-width, var(--border-width-sm)) solid transparent;
55
- outline-offset: calc(var(--tree-view-focus-ring-width, var(--border-width-sm)) * -1);
54
+ outline: var(--tree-view-focus-ring-width, var(--focus-ring-inset-width, var(--border-width-sm)))
55
+ solid transparent;
56
+ outline-offset: calc(var(--tree-view-focus-ring-width, var(--focus-ring-inset-width, var(--border-width-sm))) * -1);
56
57
  text-align: start;
57
58
  transition: background-color var(--tree-view-transition, var(--transition-default)),
58
59
  color var(--tree-view-transition, var(--transition-default)),
@@ -87,17 +88,17 @@
87
88
  }
88
89
 
89
90
  .-ZBX5W_branchTrigger, .-ZBX5W_branchIndicator, .-ZBX5W_itemIndicator {
90
- width: var(--tree-view-indicator-size, 1rem);
91
- height: var(--tree-view-indicator-size, 1rem);
92
- flex: 0 0 var(--tree-view-indicator-size, 1rem);
91
+ width: var(--tree-view-indicator-size, var(--spacing-4));
92
+ height: var(--tree-view-indicator-size, var(--spacing-4));
93
+ flex: 0 0 var(--tree-view-indicator-size, var(--spacing-4));
93
94
  color: var(--tree-view-indicator-color, currentColor);
94
95
  justify-content: center;
95
96
  align-items: center;
96
97
  display: inline-flex;
97
98
 
98
99
  & svg {
99
- width: var(--tree-view-indicator-icon-size, .875rem);
100
- height: var(--tree-view-indicator-icon-size, .875rem);
100
+ width: var(--tree-view-indicator-icon-size, var(--spacing-3-5));
101
+ height: var(--tree-view-indicator-icon-size, var(--spacing-3-5));
101
102
  }
102
103
  }
103
104
 
@@ -120,9 +121,9 @@
120
121
  overflow: hidden;
121
122
 
122
123
  & svg {
123
- width: var(--tree-view-node-icon-size, 1rem);
124
- height: var(--tree-view-node-icon-size, 1rem);
125
- flex: 0 0 var(--tree-view-node-icon-size, 1rem);
124
+ width: var(--tree-view-node-icon-size, var(--spacing-4));
125
+ height: var(--tree-view-node-icon-size, var(--spacing-4));
126
+ flex: 0 0 var(--tree-view-node-icon-size, var(--spacing-4));
126
127
  }
127
128
  }
128
129
 
@@ -151,20 +152,21 @@
151
152
  position: absolute;
152
153
  inset-inline-start: calc(var(--tree-view-item-padding-x, var(--spacing-2)) +
153
154
  ((var(--depth, 1) - 1) * var(--tree-view-indent, 1rem)) +
154
- (var(--tree-view-indicator-size, 1rem) / 2));
155
+ (var(--tree-view-indicator-size, var(--spacing-4)) / 2));
155
156
  }
156
157
 
157
158
  .-ZBX5W_nodeCheckbox {
158
159
  box-sizing: border-box;
159
- width: var(--tree-view-checkbox-size, 1rem);
160
- height: var(--tree-view-checkbox-size, 1rem);
161
- flex: 0 0 var(--tree-view-checkbox-size, 1rem);
160
+ width: var(--tree-view-checkbox-size, var(--spacing-4));
161
+ height: var(--tree-view-checkbox-size, var(--spacing-4));
162
+ flex: 0 0 var(--tree-view-checkbox-size, var(--spacing-4));
162
163
  border: var(--tree-view-checkbox-border-width, var(--border-width-sm)) solid
163
164
  var(--tree-view-checkbox-border-color, var(--color-border));
164
165
  border-radius: var(--tree-view-checkbox-radius, var(--radius-xs));
165
166
  background-color: var(--tree-view-checkbox-bg, var(--color-background));
166
167
  color: var(--tree-view-checkbox-color, var(--color-primary-foreground));
167
- outline: var(--tree-view-focus-ring-width, var(--border-width-sm)) solid transparent;
168
+ outline: var(--tree-view-focus-ring-width, var(--focus-ring-inset-width, var(--border-width-sm)))
169
+ solid transparent;
168
170
  outline-offset: var(--tree-view-checkbox-focus-ring-offset, var(--border-width-sm));
169
171
  transition: background-color var(--tree-view-transition, var(--transition-default)),
170
172
  border-color var(--tree-view-transition, var(--transition-default)),
@@ -188,8 +190,8 @@
188
190
  }
189
191
 
190
192
  & svg {
191
- width: var(--tree-view-checkbox-icon-size, .75rem);
192
- height: var(--tree-view-checkbox-icon-size, .75rem);
193
+ width: var(--tree-view-checkbox-icon-size, var(--spacing-3));
194
+ height: var(--tree-view-checkbox-icon-size, var(--spacing-3));
193
195
  }
194
196
  }
195
197
 
@@ -210,8 +212,9 @@
210
212
  background-color: var(--tree-view-rename-input-bg, var(--color-background));
211
213
  color: var(--tree-view-rename-input-color, var(--color-foreground));
212
214
  font: inherit;
213
- outline: var(--tree-view-focus-ring-width, var(--border-width-sm)) solid transparent;
214
- outline-offset: calc(var(--tree-view-focus-ring-width, var(--border-width-sm)) * -1);
215
+ outline: var(--tree-view-focus-ring-width, var(--focus-ring-inset-width, var(--border-width-sm)))
216
+ solid transparent;
217
+ outline-offset: calc(var(--tree-view-focus-ring-width, var(--focus-ring-inset-width, var(--border-width-sm))) * -1);
215
218
  flex: 1;
216
219
 
217
220
  &:focus-visible {
@@ -0,0 +1,317 @@
1
+ @layer ui.components {
2
+ ._3-ErqG_root {
3
+ box-sizing: border-box;
4
+ color: var(--color-foreground);
5
+ font-family: var(--typeset-font-body, inherit);
6
+ font-size: calc(var(--typeset-size, 1em) * 1.125);
7
+ line-height: var(--typeset-leading, 1.75);
8
+ overflow-wrap: break-word;
9
+ }
10
+
11
+ @media (width >= 48rem), print {
12
+ ._3-ErqG_root {
13
+ font-size: var(--typeset-size, 1em);
14
+ }
15
+ }
16
+
17
+ ._3-ErqG_root {
18
+ & :not(:where(.not-typeset, [data-not-typeset], .not-typeset *, [data-not-typeset] *)) {
19
+ &:where(p) {
20
+ margin-block: var(--typeset-flow, 1.25em) 0;
21
+ }
22
+
23
+ &:where(h1, h2, h3, h4, h5, h6) {
24
+ color: var(--color-foreground);
25
+ font-family: var(--typeset-font-heading, var(--font-sans));
26
+ font-weight: var(--weight-semibold);
27
+ letter-spacing: -.02em;
28
+ margin-block-end: 0;
29
+ }
30
+
31
+ &:where(h1) {
32
+ margin-block-start: var(--typeset-flow, 1.25em);
33
+ font-size: 1.75em;
34
+ line-height: 1.3;
35
+ }
36
+
37
+ &:where(h2) {
38
+ margin-block-start: calc(var(--typeset-flow, 1.25em) * 1.4);
39
+ font-size: 1.25em;
40
+ line-height: 1.4;
41
+ }
42
+
43
+ &:where(h3) {
44
+ margin-block-start: var(--typeset-flow, 1.25em);
45
+ font-size: 1.125em;
46
+ line-height: 1.45;
47
+ }
48
+
49
+ &:where(h4) {
50
+ margin-block-start: var(--typeset-flow, 1.25em);
51
+ font-size: 1em;
52
+ line-height: 1.5;
53
+ }
54
+
55
+ &:where(h5) {
56
+ color: var(--color-muted-foreground);
57
+ font-size: .875em;
58
+ font-weight: var(--weight-medium);
59
+ margin-block-start: calc(var(--typeset-flow, 1.25em) / .875);
60
+ line-height: 1.5;
61
+ }
62
+
63
+ &:where(h6) {
64
+ color: var(--color-muted-foreground);
65
+ font-size: .8125em;
66
+ font-weight: var(--weight-medium);
67
+ letter-spacing: .08em;
68
+ text-transform: uppercase;
69
+ margin-block-start: calc(var(--typeset-flow, 1.25em) / .8125);
70
+ line-height: 1.5;
71
+ }
72
+
73
+ &:where([id]) {
74
+ scroll-margin-block-start: var(--typeset-flow, 1.25em);
75
+ }
76
+
77
+ &:where(h1 + *, h2 + *, h3 + *, h4 + *, h5 + *, h6 + *) {
78
+ margin-block-start: 1em;
79
+ }
80
+
81
+ &:where(a) {
82
+ color: var(--color-primary);
83
+ text-underline-offset: .15em;
84
+ text-decoration: underline .08em;
85
+ }
86
+
87
+ &:where(ul, ol) {
88
+ margin-block: var(--typeset-flow, 1.25em) 0;
89
+ padding-inline-start: 1.5em;
90
+ }
91
+
92
+ &:where(ul) {
93
+ list-style: outside;
94
+ }
95
+
96
+ &:where(ol) {
97
+ list-style: decimal;
98
+ }
99
+
100
+ &:where(ul ul) {
101
+ list-style: circle;
102
+ }
103
+
104
+ &:where(ul ul ul) {
105
+ list-style: square;
106
+ }
107
+
108
+ &:where(ol ol) {
109
+ list-style: lower-alpha;
110
+ }
111
+
112
+ &:where(ol ol ol) {
113
+ list-style: lower-roman;
114
+ }
115
+
116
+ &:where(li)::marker {
117
+ color: var(--color-muted-foreground);
118
+ font-weight: var(--weight-semibold);
119
+ }
120
+
121
+ &:where(li + li) {
122
+ margin-block-start: .25em;
123
+ }
124
+
125
+ &:where(li > ul, li > ol) {
126
+ margin-block-start: .5em;
127
+ }
128
+
129
+ &:where(ul.contains-task-list) {
130
+ padding-inline-start: .25em;
131
+ list-style: none;
132
+ }
133
+
134
+ &:where(li.task-list-item > input[type="checkbox"]) {
135
+ vertical-align: -.1em;
136
+ accent-color: var(--color-primary);
137
+ margin-inline-end: .5em;
138
+ }
139
+
140
+ &:where(blockquote) {
141
+ margin-block: var(--typeset-flow, 1.25em) 0;
142
+ border-inline-start: var(--border-width-md) solid var(--color-border);
143
+ color: var(--color-muted-foreground);
144
+ margin-inline: 0;
145
+ padding-inline-start: 1em;
146
+ }
147
+
148
+ &:where(:not(pre) > code) {
149
+ border-radius: var(--radius-sm);
150
+ background: var(--color-muted);
151
+ color: var(--color-foreground);
152
+ font-family: var(--typeset-font-mono, var(--font-mono));
153
+ padding: .1em .3em;
154
+ font-size: .875em;
155
+ }
156
+
157
+ &:where(pre) {
158
+ max-width: 100%;
159
+ margin-block: var(--typeset-flow, 1.25em) 0;
160
+ border: var(--border-width-sm) solid var(--color-border);
161
+ border-radius: var(--radius-md);
162
+ background: var(--color-muted);
163
+ color: var(--color-foreground);
164
+ font-family: var(--typeset-font-mono, var(--font-mono));
165
+ padding: 1em;
166
+ font-size: .875em;
167
+ line-height: 1.6;
168
+ overflow-x: auto;
169
+ }
170
+
171
+ &:where(pre > code) {
172
+ color: inherit;
173
+ font: inherit;
174
+ background: none;
175
+ border-radius: 0;
176
+ padding: 0;
177
+ }
178
+
179
+ &:where(hr) {
180
+ margin-block: var(--typeset-flow, 1.25em) 0;
181
+ border: 0;
182
+ border-block-start: var(--border-width-sm) solid var(--color-border);
183
+ }
184
+
185
+ &:where(table) {
186
+ width: 100%;
187
+ max-width: 100%;
188
+ margin-block: var(--typeset-flow, 1.25em) 0;
189
+ border-collapse: separate;
190
+ border-spacing: 0;
191
+ border-block-end: var(--border-width-sm) solid var(--color-border);
192
+ font-variant-numeric: tabular-nums;
193
+ font-size: 1em;
194
+ line-height: 1.5;
195
+ }
196
+
197
+ &:where(thead th) {
198
+ font-weight: var(--weight-medium);
199
+ text-align: start;
200
+ white-space: nowrap;
201
+ padding: .65em 1em;
202
+ }
203
+
204
+ &:where(:is(tbody, tfoot) :is(td, th)) {
205
+ border-block-start: var(--border-width-sm) solid var(--color-border);
206
+ text-align: start;
207
+ vertical-align: top;
208
+ padding: .75em 1em;
209
+ }
210
+
211
+ &:where(tbody th, tfoot th) {
212
+ font-weight: var(--weight-medium);
213
+ }
214
+
215
+ &:where(th:first-child, td:first-child) {
216
+ padding-inline-start: 0;
217
+ }
218
+
219
+ &:where(th[align="center"], td[align="center"]) {
220
+ text-align: center;
221
+ }
222
+
223
+ &:where(th[align="right"], td[align="right"]) {
224
+ text-align: end;
225
+ }
226
+
227
+ &:where(img, video) {
228
+ max-width: 100%;
229
+ height: auto;
230
+ margin-block: var(--typeset-flow, 1.25em) 0;
231
+ border-radius: var(--radius-md);
232
+ display: block;
233
+ }
234
+
235
+ &:where(p img) {
236
+ margin-block-start: 0;
237
+ }
238
+
239
+ &:where(figure) {
240
+ margin-block: var(--typeset-flow, 1.25em) 0;
241
+ margin-inline: 0;
242
+ }
243
+
244
+ &:where(figcaption, caption) {
245
+ color: var(--color-muted-foreground);
246
+ text-align: center;
247
+ margin-block-start: .75em;
248
+ font-size: .875em;
249
+ }
250
+
251
+ &:where(caption) {
252
+ caption-side: bottom;
253
+ }
254
+
255
+ &:where(details) {
256
+ margin-block: var(--typeset-flow, 1.25em) 0;
257
+ }
258
+
259
+ &:where(summary) {
260
+ cursor: pointer;
261
+ font-weight: var(--weight-medium);
262
+ }
263
+
264
+ &:where(summary)::marker {
265
+ color: var(--color-muted-foreground);
266
+ }
267
+
268
+ &:where(dl) {
269
+ margin-block: var(--typeset-flow, 1.25em) 0;
270
+ }
271
+
272
+ &:where(dt) {
273
+ font-weight: var(--weight-medium);
274
+ margin-block-start: 1em;
275
+ }
276
+
277
+ &:where(dt + dt) {
278
+ margin-block-start: .25em;
279
+ }
280
+
281
+ &:where(dd) {
282
+ color: var(--color-muted-foreground);
283
+ margin-block-start: .25em;
284
+ margin-inline-start: 0;
285
+ padding-inline-start: 1em;
286
+ }
287
+
288
+ &:where(.footnotes, [data-footnotes]) {
289
+ margin-block: calc(var(--typeset-flow, 1.25em) * 2) 0;
290
+ border-block-start: var(--border-width-sm) solid var(--color-border);
291
+ color: var(--color-muted-foreground);
292
+ padding-block-start: var(--typeset-flow, 1.25em);
293
+ font-size: .875em;
294
+ }
295
+ }
296
+ }
297
+
298
+ ._3-ErqG_root > :where(:first-child):not(:where(.not-typeset, [data-not-typeset])), ._3-ErqG_root :where(li > :first-child, blockquote > :first-child, td > :first-child, th > :first-child, dd > :first-child, figure > :first-child, figure > picture > img):not(:where(.not-typeset, [data-not-typeset], .not-typeset *, [data-not-typeset] *)) {
299
+ margin-block-start: 0;
300
+ }
301
+
302
+ ._3-ErqG_scroll {
303
+ max-width: 100%;
304
+ overscroll-behavior-inline: contain;
305
+ margin-block-start: var(--typeset-flow, 1.25em);
306
+ overflow-x: auto;
307
+ }
308
+
309
+ ._3-ErqG_root > ._3-ErqG_scroll:first-child, ._3-ErqG_root ._3-ErqG_scroll > * {
310
+ margin-block-start: 0;
311
+ }
312
+
313
+ ._3-ErqG_root ._3-ErqG_scroll table {
314
+ width: max-content;
315
+ max-width: none;
316
+ }
317
+ }
@@ -0,0 +1,7 @@
1
+ //#region src/components/typeset/Typeset.d.ts
2
+ declare const Typeset: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("@ark-ui/react/factory").PolymorphicProps & import("react").RefAttributes<HTMLDivElement>> & {
3
+ Root: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("@ark-ui/react/factory").PolymorphicProps & import("react").RefAttributes<HTMLDivElement>>;
4
+ Scroll: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("@ark-ui/react/factory").PolymorphicProps & import("react").RefAttributes<HTMLDivElement>>;
5
+ };
6
+ //#endregion
7
+ export { Typeset };
@@ -0,0 +1,33 @@
1
+ import { normalizeClassName } from "../../lib/moduix/normalizeClassName.js";
2
+ import Typeset_module_default from "./Typeset.module.js";
3
+ import { ark } from "@ark-ui/react/factory";
4
+ import { clsx } from "clsx";
5
+ import { forwardRef } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ //#region src/components/typeset/Typeset.tsx
8
+ const TypesetRoot = forwardRef(function TypesetRoot({ className, ...props }, ref) {
9
+ return /* @__PURE__ */ jsx(ark.div, {
10
+ ref,
11
+ "data-scope": "typeset",
12
+ "data-part": "root",
13
+ "data-slot": "typeset",
14
+ className: clsx(Typeset_module_default.root, normalizeClassName(className)),
15
+ ...props
16
+ });
17
+ });
18
+ const TypesetScroll = forwardRef(function TypesetScroll({ className, ...props }, ref) {
19
+ return /* @__PURE__ */ jsx(ark.div, {
20
+ ref,
21
+ "data-scope": "typeset",
22
+ "data-part": "scroll",
23
+ "data-slot": "typeset-scroll",
24
+ className: clsx(Typeset_module_default.scroll, normalizeClassName(className)),
25
+ ...props
26
+ });
27
+ });
28
+ const Typeset = Object.assign(TypesetRoot, {
29
+ Root: TypesetRoot,
30
+ Scroll: TypesetScroll
31
+ });
32
+ //#endregion
33
+ export { Typeset };
@@ -0,0 +1,8 @@
1
+ import './Typeset.css';
2
+ //#region src/components/typeset/Typeset.module.css
3
+ var Typeset_module_default = {
4
+ "root": "_3-ErqG_root",
5
+ "scroll": "_3-ErqG_scroll"
6
+ };
7
+ //#endregion
8
+ export { Typeset_module_default as default };
package/dist/index.d.ts CHANGED
@@ -75,10 +75,12 @@ import { Tabs, useTabs } from "./components/tabs/Tabs.js";
75
75
  import { Text } from "./components/text/Text.js";
76
76
  import { Textarea } from "./components/textarea/Textarea.js";
77
77
  import { Timer, useTimer, useTimerContext } from "./components/timer/Timer.js";
78
+ import { Typeset } from "./components/typeset/Typeset.js";
78
79
  import { Toast, Toaster, createToaster } from "./components/toast/Toast.js";
79
80
  import { Tour, useTour, waitForElement, waitForElementValue, waitForEvent, waitForPromise } from "./components/tour/Tour.js";
80
81
  import { TreeView, TreeViewLoadChildrenDetails, TreeViewNodeProviderProps, createFileTreeCollection, createTreeCollection, useTreeView, useTreeViewNodeContext } from "./components/tree-view/TreeView.js";
81
82
  import { Toggle, useToggleContext } from "./components/toggle/Toggle.js";
82
83
  import { ToggleGroup, useToggleGroup, useToggleGroupContext } from "./components/toggle-group/ToggleGroup.js";
83
84
  import { Portal } from "@ark-ui/react/portal";
84
- export { Accordion, Alert, AngleSlider, AspectRatio, Avatar, Badge, Bleed, Breadcrumbs, Button, Card, Carousel, Checkbox, Clipboard, CloseButton, Collapsible, ColorPicker, Combobox, CommandPalette, Container, DateInput, type DateInputDateValue, DatePicker, type DatePickerDayTableProps, type DatePickerFieldProps, type DatePickerRangeFieldProps, type DatePickerRootProps, type DatePickerRootProviderProps, Dialog, type DialogRootProps, type DialogRootProviderProps, Drawer, Editable, Empty, Field, Fieldset, FileUpload, FloatingPanel, Heading, Highlight, HoverCard, Image, ImageCropper, Input, InputGroup, Kbd, Lightbox, LightboxBind, type LightboxBindProps, LightboxGallery, LightboxImage, type LightboxImageSelectDetails, List, Listbox, Marquee, Menu, type ModuixScrollAreaRootProps, type ModuixScrollAreaRootProviderProps, NativeSelect, NumberInput, Pagination, PasswordInput, PinInput, Popover, Portal, ProgressCircular, ProgressLinear, QrCode, RadioGroup, type RadioGroupItemControlProps, type RadioGroupItemControlSize, type RadioGroupOptionProps, RatingGroup, type RatingGroupItemIndicatorProps, type RatingGroupRootProps, type RatingGroupRootProviderProps, type RatingGroupSize, ScrollArea, SegmentGroup, Select, Separator, Sidebar, SignaturePad, SimpleGrid, Skeleton, Slider, Spinner, SplitButton, Splitter, type SplitterPanelData, Stack, Steps, Swap, Switch, type SwitchRootProps, type SwitchRootProviderProps, type SwitchSize, Table, Tabs, Tag, TagsInput, Text, Textarea, Timer, Toast, Toaster, Toggle, ToggleGroup, Tooltip, Tour, TreeView, type TreeViewLoadChildrenDetails, type TreeViewNodeProviderProps, createFileTreeCollection, createSplitterRegistry, createToaster, createTreeCollection, parseColor, resizeTriggerAxes, useAccordion, useAngleSlider, useAvatar, useAvatarContext, useCheckbox, useCheckboxGroup, useCollapsible, useColorPicker, useColorPickerContext, useCombobox, useComboboxContext, useDateInput, useDateInputContext, useDatePicker, useDatePickerContext, useDialog, useDialogContext, useDrawer, useEditable, useEditableContext, useField, useFieldContext, useFieldset, useFileUpload, useFileUploadContext, useHoverCard, useHoverCardContext, useImageCropper, useDialog$1 as useLightbox, useDialogContext$1 as useLightboxContext, useListbox, useListboxContext, useListboxItemContext, useMarquee, useMenu, useNumberInput, useNumberInputContext, usePasswordInput, usePinInput, usePopover, useQrCode, useRadioGroup, useRatingGroup, useRatingGroupContext, useRatingGroupItemContext, useSegmentGroup, useSidebar, useSignaturePad, useSignaturePadContext, useSlider, useSliderContext, useSplitter, useSplitterContext, useSwapContext, useSwitch, useSwitchContext, useTabs, useTagsInput, useTagsInputContext, useTagsInputItemContext, useTimer, useTimerContext, useToggleContext, useToggleGroup, useToggleGroupContext, useTooltip, useTooltipContext, useTour, useTreeView, useTreeViewNodeContext, waitForElement, waitForElementValue, waitForEvent, waitForPromise };
85
+ import { LocaleProvider, useLocaleContext } from "@ark-ui/react/locale";
86
+ export { Accordion, Alert, AngleSlider, AspectRatio, Avatar, Badge, Bleed, Breadcrumbs, Button, Card, Carousel, Checkbox, Clipboard, CloseButton, Collapsible, ColorPicker, Combobox, CommandPalette, Container, DateInput, type DateInputDateValue, DatePicker, type DatePickerDayTableProps, type DatePickerFieldProps, type DatePickerRangeFieldProps, type DatePickerRootProps, type DatePickerRootProviderProps, Dialog, type DialogRootProps, type DialogRootProviderProps, Drawer, Editable, Empty, Field, Fieldset, FileUpload, FloatingPanel, Heading, Highlight, HoverCard, Image, ImageCropper, Input, InputGroup, Kbd, Lightbox, LightboxBind, type LightboxBindProps, LightboxGallery, LightboxImage, type LightboxImageSelectDetails, List, Listbox, LocaleProvider, Marquee, Menu, type ModuixScrollAreaRootProps, type ModuixScrollAreaRootProviderProps, NativeSelect, NumberInput, Pagination, PasswordInput, PinInput, Popover, Portal, ProgressCircular, ProgressLinear, QrCode, RadioGroup, type RadioGroupItemControlProps, type RadioGroupItemControlSize, type RadioGroupOptionProps, RatingGroup, type RatingGroupItemIndicatorProps, type RatingGroupRootProps, type RatingGroupRootProviderProps, type RatingGroupSize, ScrollArea, SegmentGroup, Select, Separator, Sidebar, SignaturePad, SimpleGrid, Skeleton, Slider, Spinner, SplitButton, Splitter, type SplitterPanelData, Stack, Steps, Swap, Switch, type SwitchRootProps, type SwitchRootProviderProps, type SwitchSize, Table, Tabs, Tag, TagsInput, Text, Textarea, Timer, Toast, Toaster, Toggle, ToggleGroup, Tooltip, Tour, TreeView, type TreeViewLoadChildrenDetails, type TreeViewNodeProviderProps, Typeset, createFileTreeCollection, createSplitterRegistry, createToaster, createTreeCollection, parseColor, resizeTriggerAxes, useAccordion, useAngleSlider, useAvatar, useAvatarContext, useCheckbox, useCheckboxGroup, useCollapsible, useColorPicker, useColorPickerContext, useCombobox, useComboboxContext, useDateInput, useDateInputContext, useDatePicker, useDatePickerContext, useDialog, useDialogContext, useDrawer, useEditable, useEditableContext, useField, useFieldContext, useFieldset, useFileUpload, useFileUploadContext, useHoverCard, useHoverCardContext, useImageCropper, useDialog$1 as useLightbox, useDialogContext$1 as useLightboxContext, useListbox, useListboxContext, useListboxItemContext, useLocaleContext, useMarquee, useMenu, useNumberInput, useNumberInputContext, usePasswordInput, usePinInput, usePopover, useQrCode, useRadioGroup, useRatingGroup, useRatingGroupContext, useRatingGroupItemContext, useSegmentGroup, useSidebar, useSignaturePad, useSignaturePadContext, useSlider, useSliderContext, useSplitter, useSplitterContext, useSwapContext, useSwitch, useSwitchContext, useTabs, useTagsInput, useTagsInputContext, useTagsInputItemContext, useTimer, useTimerContext, useToggleContext, useToggleGroup, useToggleGroupContext, useTooltip, useTooltipContext, useTour, useTreeView, useTreeViewNodeContext, waitForElement, waitForElementValue, waitForEvent, waitForPromise };
package/dist/index.js CHANGED
@@ -75,10 +75,12 @@ import { Tabs, useTabs } from "./components/tabs/Tabs.js";
75
75
  import { Text } from "./components/text/Text.js";
76
76
  import { Textarea } from "./components/textarea/Textarea.js";
77
77
  import { Timer, useTimer, useTimerContext } from "./components/timer/Timer.js";
78
+ import { Typeset } from "./components/typeset/Typeset.js";
78
79
  import { Toast, Toaster, createToaster } from "./components/toast/Toast.js";
79
80
  import { Tour, useTour, waitForElement, waitForElementValue, waitForEvent, waitForPromise } from "./components/tour/Tour.js";
80
81
  import { TreeView, createFileTreeCollection, createTreeCollection, useTreeView, useTreeViewNodeContext } from "./components/tree-view/TreeView.js";
81
82
  import { Toggle, useToggleContext } from "./components/toggle/Toggle.js";
82
83
  import { ToggleGroup, useToggleGroup, useToggleGroupContext } from "./components/toggle-group/ToggleGroup.js";
83
84
  import { Portal } from "@ark-ui/react/portal";
84
- export { Accordion, Alert, AngleSlider, AspectRatio, Avatar, Badge, Bleed, Breadcrumbs, Button, Card, Carousel, Checkbox, Clipboard, CloseButton, Collapsible, ColorPicker, Combobox, CommandPalette, Container, DateInput, DatePicker, Dialog, Drawer, Editable, Empty, Field, Fieldset, FileUpload, FloatingPanel, Heading, Highlight, HoverCard, Image, ImageCropper, Input, InputGroup, Kbd, Lightbox, LightboxBind, LightboxGallery, LightboxImage, List, Listbox, Marquee, Menu, NativeSelect, NumberInput, Pagination, PasswordInput, PinInput, Popover, Portal, ProgressCircular, ProgressLinear, QrCode, RadioGroup, RatingGroup, ScrollArea, SegmentGroup, Select, Separator, Sidebar, SignaturePad, SimpleGrid, Skeleton, Slider, Spinner, SplitButton, Splitter, Stack, Steps, Swap, Switch, Table, Tabs, Tag, TagsInput, Text, Textarea, Timer, Toast, Toaster, Toggle, ToggleGroup, Tooltip, Tour, TreeView, createFileTreeCollection, createSplitterRegistry, createToaster, createTreeCollection, parseColor, resizeTriggerAxes, useAccordion, useAngleSlider, useAvatar, useAvatarContext, useCheckbox, useCheckboxGroup, useCollapsible, useColorPicker, useColorPickerContext, useCombobox, useComboboxContext, useDateInput, useDateInputContext, useDatePicker, useDatePickerContext, useDialog, useDialogContext, useDrawer, useEditable, useEditableContext, useField, useFieldContext, useFieldset, useFileUpload, useFileUploadContext, useHoverCard, useHoverCardContext, useImageCropper, useDialog$1 as useLightbox, useDialogContext$1 as useLightboxContext, useListbox, useListboxContext, useListboxItemContext, useMarquee, useMenu, useNumberInput, useNumberInputContext, usePasswordInput, usePinInput, usePopover, useQrCode, useRadioGroup, useRatingGroup, useRatingGroupContext, useRatingGroupItemContext, useSegmentGroup, useSidebar, useSignaturePad, useSignaturePadContext, useSlider, useSliderContext, useSplitter, useSplitterContext, useSwapContext, useSwitch, useSwitchContext, useTabs, useTagsInput, useTagsInputContext, useTagsInputItemContext, useTimer, useTimerContext, useToggleContext, useToggleGroup, useToggleGroupContext, useTooltip, useTooltipContext, useTour, useTreeView, useTreeViewNodeContext, waitForElement, waitForElementValue, waitForEvent, waitForPromise };
85
+ import { LocaleProvider, useLocaleContext } from "@ark-ui/react/locale";
86
+ export { Accordion, Alert, AngleSlider, AspectRatio, Avatar, Badge, Bleed, Breadcrumbs, Button, Card, Carousel, Checkbox, Clipboard, CloseButton, Collapsible, ColorPicker, Combobox, CommandPalette, Container, DateInput, DatePicker, Dialog, Drawer, Editable, Empty, Field, Fieldset, FileUpload, FloatingPanel, Heading, Highlight, HoverCard, Image, ImageCropper, Input, InputGroup, Kbd, Lightbox, LightboxBind, LightboxGallery, LightboxImage, List, Listbox, LocaleProvider, Marquee, Menu, NativeSelect, NumberInput, Pagination, PasswordInput, PinInput, Popover, Portal, ProgressCircular, ProgressLinear, QrCode, RadioGroup, RatingGroup, ScrollArea, SegmentGroup, Select, Separator, Sidebar, SignaturePad, SimpleGrid, Skeleton, Slider, Spinner, SplitButton, Splitter, Stack, Steps, Swap, Switch, Table, Tabs, Tag, TagsInput, Text, Textarea, Timer, Toast, Toaster, Toggle, ToggleGroup, Tooltip, Tour, TreeView, Typeset, createFileTreeCollection, createSplitterRegistry, createToaster, createTreeCollection, parseColor, resizeTriggerAxes, useAccordion, useAngleSlider, useAvatar, useAvatarContext, useCheckbox, useCheckboxGroup, useCollapsible, useColorPicker, useColorPickerContext, useCombobox, useComboboxContext, useDateInput, useDateInputContext, useDatePicker, useDatePickerContext, useDialog, useDialogContext, useDrawer, useEditable, useEditableContext, useField, useFieldContext, useFieldset, useFileUpload, useFileUploadContext, useHoverCard, useHoverCardContext, useImageCropper, useDialog$1 as useLightbox, useDialogContext$1 as useLightboxContext, useListbox, useListboxContext, useListboxItemContext, useLocaleContext, useMarquee, useMenu, useNumberInput, useNumberInputContext, usePasswordInput, usePinInput, usePopover, useQrCode, useRadioGroup, useRatingGroup, useRatingGroupContext, useRatingGroupItemContext, useSegmentGroup, useSidebar, useSignaturePad, useSignaturePadContext, useSlider, useSliderContext, useSplitter, useSplitterContext, useSwapContext, useSwitch, useSwitchContext, useTabs, useTagsInput, useTagsInputContext, useTagsInputItemContext, useTimer, useTimerContext, useToggleContext, useToggleGroup, useToggleGroupContext, useTooltip, useTooltipContext, useTour, useTreeView, useTreeViewNodeContext, waitForElement, waitForElementValue, waitForEvent, waitForPromise };
@@ -0,0 +1,65 @@
1
+ [data-moduix-theme="contrast"] {
2
+ color-scheme: light;
3
+ --background: oklch(99.5% .001 250);
4
+ --foreground: oklch(14.5% .018 250);
5
+ --card: oklch(100% 0 0);
6
+ --card-foreground: oklch(14.5% .018 250);
7
+ --popover: oklch(100% 0 0);
8
+ --popover-foreground: oklch(14.5% .018 250);
9
+ --primary: oklch(46% .2 255);
10
+ --primary-foreground: oklch(100% 0 0);
11
+ --secondary: oklch(94% .012 250);
12
+ --secondary-foreground: oklch(18% .025 250);
13
+ --muted: oklch(93% .01 250);
14
+ --muted-foreground: oklch(39% .026 250);
15
+ --accent: oklch(90% .04 245);
16
+ --accent-foreground: oklch(16% .04 250);
17
+ --border: oklch(72% .025 250);
18
+ --input: oklch(62% .035 250);
19
+ --ring: oklch(50% .19 255);
20
+ --overlay: oklch(9% .018 250 / .38);
21
+ --overlay-foreground: oklch(9% .018 250 / .12);
22
+ --sidebar: oklch(96.5% .005 250);
23
+ --sidebar-foreground: oklch(14.5% .018 250);
24
+ --sidebar-primary: oklch(46% .2 255);
25
+ --sidebar-primary-foreground: oklch(100% 0 0);
26
+ --sidebar-accent: oklch(90% .04 245);
27
+ --sidebar-accent-foreground: oklch(16% .04 250);
28
+ --sidebar-border: oklch(72% .025 250);
29
+ --sidebar-ring: oklch(50% .19 255);
30
+ --radius: .375rem;
31
+ --shadow-sm: 0 1px 2px #0f172a1a;
32
+ --shadow-md: 0 4px 10px #0f172a24;
33
+ --shadow-lg: 0 16px 30px #0f172a2e;
34
+
35
+ & .dark, &.dark {
36
+ color-scheme: dark;
37
+ --background: oklch(11% .018 250);
38
+ --foreground: oklch(98.5% .004 250);
39
+ --card: oklch(15.5% .022 250);
40
+ --card-foreground: oklch(98.5% .004 250);
41
+ --popover: oklch(15.5% .022 250);
42
+ --popover-foreground: oklch(98.5% .004 250);
43
+ --primary: oklch(76% .13 255);
44
+ --primary-foreground: oklch(12% .02 250);
45
+ --secondary: oklch(24% .026 250);
46
+ --secondary-foreground: oklch(98.5% .004 250);
47
+ --muted: oklch(22.5% .024 250);
48
+ --muted-foreground: oklch(76% .018 250);
49
+ --accent: oklch(30% .06 250);
50
+ --accent-foreground: oklch(98.5% .004 250);
51
+ --border: oklch(80% .025 250 / .34);
52
+ --input: oklch(82% .025 250 / .42);
53
+ --ring: oklch(74% .13 255);
54
+ --overlay: oklch(4% .014 250 / .84);
55
+ --overlay-foreground: oklch(98.5% .004 250 / .12);
56
+ --sidebar: oklch(13% .02 250);
57
+ --sidebar-foreground: oklch(98.5% .004 250);
58
+ --sidebar-primary: oklch(76% .13 255);
59
+ --sidebar-primary-foreground: oklch(12% .02 250);
60
+ --sidebar-accent: oklch(30% .06 250);
61
+ --sidebar-accent-foreground: oklch(98.5% .004 250);
62
+ --sidebar-border: oklch(80% .025 250 / .34);
63
+ --sidebar-ring: oklch(74% .13 255);
64
+ }
65
+ }