@g4rcez/components 4.0.2 → 4.1.2
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/ai/SKILL.md +120 -153
- package/ai/docs/Alert.md +47 -48
- package/ai/docs/AnimatedList.md +88 -87
- package/ai/docs/Autocomplete.md +102 -106
- package/ai/docs/Button.md +33 -33
- package/ai/docs/Calendar.md +67 -101
- package/ai/docs/Card.md +59 -55
- package/ai/docs/Checkbox.md +77 -82
- package/ai/docs/CommandPalette.md +154 -172
- package/ai/docs/DatePicker.md +45 -64
- package/ai/docs/Dropdown.md +98 -126
- package/ai/docs/Empty.md +41 -44
- package/ai/docs/Expand.md +40 -54
- package/ai/docs/FileUpload.md +102 -109
- package/ai/docs/Form.md +35 -29
- package/ai/docs/FormReset.md +37 -37
- package/ai/docs/Heading.md +4 -6
- package/ai/docs/Input.md +73 -98
- package/ai/docs/InputField.md +67 -67
- package/ai/docs/List.md +88 -85
- package/ai/docs/Menu.md +62 -60
- package/ai/docs/Modal.md +129 -136
- package/ai/docs/MultiSelect.md +65 -84
- package/ai/docs/Notifications.md +96 -96
- package/ai/docs/PageCalendar.md +88 -97
- package/ai/docs/Polymorph.md +25 -41
- package/ai/docs/Progress.md +55 -51
- package/ai/docs/Radiobox.md +49 -41
- package/ai/docs/RenderOnView.md +26 -32
- package/ai/docs/Resizable.md +60 -65
- package/ai/docs/Select.md +158 -158
- package/ai/docs/Shortcut.md +14 -14
- package/ai/docs/Skeleton.md +56 -60
- package/ai/docs/Slider.md +26 -49
- package/ai/docs/Slot.md +15 -17
- package/ai/docs/Spinner.md +17 -15
- package/ai/docs/Stats.md +44 -42
- package/ai/docs/Step.md +60 -60
- package/ai/docs/Switch.md +44 -54
- package/ai/docs/Table.md +124 -136
- package/ai/docs/Tabs.md +90 -90
- package/ai/docs/Tag.md +63 -65
- package/ai/docs/TaskList.md +40 -50
- package/ai/docs/Textarea.md +47 -70
- package/ai/docs/Timeline.md +98 -96
- package/ai/docs/Toolbar.md +46 -46
- package/ai/docs/Tooltip.md +103 -103
- package/ai/docs/Typography.md +55 -55
- package/ai/docs/Wizard.md +104 -109
- package/ai/docs/index.md +116 -116
- package/dist/autocomplete-DcTNOwyg.js +393 -0
- package/dist/autocomplete-DcTNOwyg.js.map +1 -0
- package/dist/{calendar-B5lSd0ID.js → calendar-BJMHRoy2.js} +104 -105
- package/dist/calendar-BJMHRoy2.js.map +1 -0
- package/dist/components/core/button.d.ts.map +1 -1
- package/dist/components/core/button.js +10 -10
- package/dist/components/core/button.js.map +1 -1
- package/dist/components/core/button.jsx +79 -0
- package/dist/components/core/heading.jsx +4 -0
- package/dist/components/core/polymorph.d.ts +1 -1
- package/dist/components/core/polymorph.d.ts.map +1 -1
- package/dist/components/core/polymorph.jsx +5 -0
- package/dist/components/core/render-on-view.jsx +31 -0
- package/dist/components/core/resizable.jsx +51 -0
- package/dist/components/core/slot.d.ts.map +1 -1
- package/dist/components/core/slot.jsx +156 -0
- package/dist/components/core/tag.d.ts +1 -1
- package/dist/components/core/tag.d.ts.map +1 -1
- package/dist/components/core/tag.js +4 -4
- package/dist/components/core/tag.js.map +1 -1
- package/dist/components/core/tag.jsx +51 -0
- package/dist/components/core/typography.jsx +18 -0
- package/dist/components/display/alert.d.ts +1 -1
- package/dist/components/display/alert.d.ts.map +1 -1
- package/dist/components/display/alert.js +48 -46
- package/dist/components/display/alert.js.map +1 -1
- package/dist/components/display/alert.jsx +61 -0
- package/dist/components/display/calendar.js +6 -6
- package/dist/components/display/calendar.jsx +299 -0
- package/dist/components/display/card.js +2 -2
- package/dist/components/display/card.js.map +1 -1
- package/dist/components/display/card.jsx +43 -0
- package/dist/components/display/empty.jsx +11 -0
- package/dist/components/display/list.js +1 -1
- package/dist/components/display/list.js.map +1 -1
- package/dist/components/display/list.jsx +81 -0
- package/dist/components/display/notifications.d.ts +1 -1
- package/dist/components/display/notifications.d.ts.map +1 -1
- package/dist/components/display/notifications.js +3 -3
- package/dist/components/display/notifications.jsx +126 -0
- package/dist/components/display/progress.jsx +11 -0
- package/dist/components/display/shortcut.jsx +23 -0
- package/dist/components/display/skeleton.d.ts.map +1 -1
- package/dist/components/display/skeleton.jsx +19 -0
- package/dist/components/display/spinner.d.ts.map +1 -1
- package/dist/components/display/spinner.jsx +11 -0
- package/dist/components/display/stats.js +1 -1
- package/dist/components/display/stats.jsx +20 -0
- package/dist/components/display/step.jsx +131 -0
- package/dist/components/display/tabs.d.ts +1 -1
- package/dist/components/display/tabs.d.ts.map +1 -1
- package/dist/components/display/tabs.js +2 -2
- package/dist/components/display/tabs.jsx +125 -0
- package/dist/components/display/timeline.js +1 -1
- package/dist/components/display/timeline.jsx +25 -0
- package/dist/components/floating/command-palette.d.ts.map +1 -1
- package/dist/components/floating/command-palette.jsx +197 -0
- package/dist/components/floating/dropdown.d.ts.map +1 -1
- package/dist/components/floating/dropdown.js +25 -17
- package/dist/components/floating/dropdown.js.map +1 -1
- package/dist/components/floating/dropdown.jsx +56 -0
- package/dist/components/floating/expand.js +7 -7
- package/dist/components/floating/expand.js.map +1 -1
- package/dist/components/floating/expand.jsx +44 -0
- package/dist/components/floating/menu.js +10 -10
- package/dist/components/floating/menu.js.map +1 -1
- package/dist/components/floating/menu.jsx +147 -0
- package/dist/components/floating/modal.d.ts +4 -4
- package/dist/components/floating/modal.d.ts.map +1 -1
- package/dist/components/floating/modal.js +106 -102
- package/dist/components/floating/modal.js.map +1 -1
- package/dist/components/floating/modal.jsx +301 -0
- package/dist/components/floating/toolbar.jsx +5 -0
- package/dist/components/floating/tooltip.d.ts.map +1 -1
- package/dist/components/floating/tooltip.js +14 -14
- package/dist/components/floating/tooltip.js.map +1 -1
- package/dist/components/floating/tooltip.jsx +58 -0
- package/dist/components/floating/wizard.jsx +161 -0
- package/dist/components/form/autocomplete.d.ts.map +1 -1
- package/dist/components/form/autocomplete.js +6 -6
- package/dist/components/form/autocomplete.jsx +278 -0
- package/dist/components/form/checkbox.js +1 -1
- package/dist/components/form/checkbox.jsx +12 -0
- package/dist/components/form/date-picker.d.ts.map +1 -1
- package/dist/components/form/date-picker.js +5 -5
- package/dist/components/form/date-picker.jsx +115 -0
- package/dist/components/form/file-upload.d.ts.map +1 -1
- package/dist/components/form/file-upload.js +2 -2
- package/dist/components/form/file-upload.jsx +134 -0
- package/dist/components/form/form.js.map +1 -1
- package/dist/components/form/form.jsx +10 -0
- package/dist/components/form/formReset.jsx +17 -0
- package/dist/components/form/free-text.d.ts.map +1 -1
- package/dist/components/form/free-text.jsx +41 -0
- package/dist/components/form/input-field.d.ts +11 -11
- package/dist/components/form/input-field.d.ts.map +1 -1
- package/dist/components/form/input-field.jsx +58 -0
- package/dist/components/form/input.js +1 -1
- package/dist/components/form/input.jsx +36 -0
- package/dist/components/form/multi-select.d.ts.map +1 -1
- package/dist/components/form/multi-select.jsx +336 -0
- package/dist/components/form/radiobox.js +1 -1
- package/dist/components/form/radiobox.jsx +6 -0
- package/dist/components/form/select.js +3 -3
- package/dist/components/form/select.jsx +42 -0
- package/dist/components/form/slider.jsx +45 -0
- package/dist/components/form/switch.js +2 -2
- package/dist/components/form/switch.js.map +1 -1
- package/dist/components/form/switch.jsx +46 -0
- package/dist/components/form/task-list.jsx +26 -0
- package/dist/components/form/textarea.jsx +12 -0
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +44 -0
- package/dist/components/page-calendar/calendar-header.jsx +83 -0
- package/dist/components/page-calendar/day-view.jsx +94 -0
- package/dist/components/page-calendar/event-pill.d.ts.map +1 -1
- package/dist/components/page-calendar/event-pill.jsx +25 -0
- package/dist/components/page-calendar/index.js +2 -0
- package/dist/components/page-calendar/month-view.jsx +46 -0
- package/dist/components/page-calendar/page-calendar.jsx +41 -0
- package/dist/components/page-calendar/page-calendar.types.js +1 -0
- package/dist/components/page-calendar/page-calendar.utils.js +93 -0
- package/dist/components/page-calendar/week-view.jsx +71 -0
- package/dist/components/table/filter.jsx +141 -0
- package/dist/components/table/group.jsx +68 -0
- package/dist/components/table/index.d.ts +2 -3
- package/dist/components/table/index.d.ts.map +1 -1
- package/dist/components/table/index.jsx +60 -0
- package/dist/components/table/inner-table.d.ts +2 -3
- package/dist/components/table/inner-table.d.ts.map +1 -1
- package/dist/components/table/inner-table.jsx +102 -0
- package/dist/components/table/metadata.jsx +36 -0
- package/dist/components/table/pagination.d.ts +3 -1
- package/dist/components/table/pagination.d.ts.map +1 -1
- package/dist/components/table/pagination.jsx +74 -0
- package/dist/components/table/row.d.ts +4 -5
- package/dist/components/table/row.d.ts.map +1 -1
- package/dist/components/table/row.jsx +49 -0
- package/dist/components/table/sort.d.ts.map +1 -1
- package/dist/components/table/sort.jsx +109 -0
- package/dist/components/table/table-lib.d.ts +1 -1
- package/dist/components/table/table-lib.d.ts.map +1 -1
- package/dist/components/table/table-lib.js +83 -0
- package/dist/components/table/table.context.jsx +4 -0
- package/dist/components/table/table.js +3 -3
- package/dist/components/table/thead.jsx +103 -0
- package/dist/config/context.js +12 -0
- package/dist/config/default-translations.d.ts +4 -0
- package/dist/config/default-translations.d.ts.map +1 -1
- package/dist/config/default-translations.jsx +87 -0
- package/dist/config/default-tweaks.js +4 -0
- package/dist/constants.js +2 -0
- package/dist/{date-picker-DwNo22lx.js → date-picker-Bnl07nd8.js} +8 -6
- package/dist/date-picker-Bnl07nd8.js.map +1 -0
- package/dist/{dom-Dl8XH0CK.js → dom-CyQHY7ID.js} +66 -61
- package/dist/dom-CyQHY7ID.js.map +1 -0
- package/dist/{file-upload-Brf2NkLr.js → file-upload-93d5DR4q.js} +139 -129
- package/dist/file-upload-93d5DR4q.js.map +1 -0
- package/dist/{floating-ui.react-QNHG9W4N.js → floating-ui.react-M2PGXLDp.js} +8 -8
- package/dist/floating-ui.react-M2PGXLDp.js.map +1 -0
- package/dist/{fns-D2eyJKd5.js → fns-C7Dt27Qd.js} +2 -2
- package/dist/fns-C7Dt27Qd.js.map +1 -0
- package/dist/hooks/use-click-outside.js +17 -0
- package/dist/hooks/use-color-parser.js +9 -0
- package/dist/hooks/use-components-provider.jsx +22 -0
- package/dist/hooks/use-debounce.d.ts +3 -3
- package/dist/hooks/use-debounce.d.ts.map +1 -1
- package/dist/hooks/use-debounce.js +12 -0
- package/dist/hooks/use-floating-ref.js +6 -0
- package/dist/hooks/use-form.d.ts +14 -13
- package/dist/hooks/use-form.d.ts.map +1 -1
- package/dist/hooks/use-form.js +563 -0
- package/dist/hooks/use-hover.js +18 -0
- package/dist/hooks/use-input-id.js +5 -0
- package/dist/hooks/use-is-coarse-device.js +12 -0
- package/dist/hooks/use-locale.js +10 -0
- package/dist/hooks/use-media-query.js +25 -0
- package/dist/hooks/use-on-event.js +7 -0
- package/dist/hooks/use-parent.js +21 -0
- package/dist/hooks/use-preferences.js +23 -0
- package/dist/hooks/use-previous.js +9 -0
- package/dist/hooks/use-reactive.js +9 -0
- package/dist/hooks/use-remove-scroll.d.ts.map +1 -1
- package/dist/hooks/use-remove-scroll.js +48 -0
- package/dist/hooks/use-resize-observer.js +17 -0
- package/dist/hooks/use-stable-ref.js +9 -0
- package/dist/hooks/use-swipe.js +17 -0
- package/dist/hooks/use-translations.d.ts +4 -0
- package/dist/hooks/use-translations.d.ts.map +1 -1
- package/dist/hooks/use-translations.js +9 -0
- package/dist/hooks/use-tweaks.js +9 -0
- package/dist/hooks/use-window-size.js +14 -0
- package/dist/index-BJ1ayTam.js +126 -0
- package/dist/index-BJ1ayTam.js.map +1 -0
- package/dist/index-C-PuFUZi.js.map +1 -1
- package/dist/{index-BelDtX5M.js → index-DDeQW0JW.js} +399 -404
- package/dist/index-DDeQW0JW.js.map +1 -0
- package/dist/index-DE4shK8D.js +215 -0
- package/dist/index-DE4shK8D.js.map +1 -0
- package/dist/{index-DJSMaZR4.js → index-DlJ_2RBL.js} +2 -2
- package/dist/index-DlJ_2RBL.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.esm-BaIwleSE.js.map +1 -1
- package/dist/index.js +20 -8177
- package/dist/index.js.map +1 -1
- package/dist/{input-CrGrSnUt.js → input-_MVxmIpu.js} +116 -114
- package/dist/input-_MVxmIpu.js.map +1 -0
- package/dist/{input-field-5vYcz5tT.js → input-field-CDCOODOl.js} +63 -47
- package/dist/input-field-CDCOODOl.js.map +1 -0
- package/dist/lib/combi-keys.js +60 -0
- package/dist/lib/dict.d.ts +1 -4
- package/dist/lib/dict.d.ts.map +1 -1
- package/dist/lib/dict.js +28 -0
- package/dist/lib/dom.d.ts +3 -2
- package/dist/lib/dom.d.ts.map +1 -1
- package/dist/lib/dom.js +66 -0
- package/dist/lib/fns.js +46 -0
- package/dist/lib/fzf.d.ts.map +1 -1
- package/dist/lib/fzf.js +115 -0
- package/dist/lib/keyboard-area.js +14 -0
- package/dist/notifications-Dp0ydKJS.js +2576 -0
- package/dist/notifications-Dp0ydKJS.js.map +1 -0
- package/dist/polymorph-B5n9fs_K.js.map +1 -1
- package/dist/preset/plugin.tailwind.d.ts.map +1 -1
- package/dist/preset/plugin.tailwind.js +20 -18
- package/dist/preset/preset.tailwind.js +24 -25
- package/dist/preset/src/styles/common.js +6 -3
- package/dist/preset/src/styles/dark.d.ts.map +1 -1
- package/dist/preset/src/styles/dark.js +9 -5
- package/dist/preset/src/styles/design-tokens.js +68 -89
- package/dist/preset/src/styles/light.d.ts.map +1 -1
- package/dist/preset/src/styles/light.js +9 -5
- package/dist/preset/src/styles/theme.js +7 -4
- package/dist/preset/src/styles/theme.types.d.ts +2 -1
- package/dist/preset/src/styles/theme.types.d.ts.map +1 -1
- package/dist/preset/src/styles/theme.types.js +2 -1
- package/dist/skeleton-BjJobYYf.js +24 -0
- package/dist/skeleton-BjJobYYf.js.map +1 -0
- package/dist/slot-CRyweuj0.js.map +1 -1
- package/dist/styles/common.js +6 -3
- package/dist/styles/dark.d.ts.map +1 -1
- package/dist/styles/dark.js +9 -5
- package/dist/styles/design-tokens.js +68 -89
- package/dist/styles/light.d.ts.map +1 -1
- package/dist/styles/light.js +9 -5
- package/dist/styles/theme.js +7 -4
- package/dist/styles/theme.types.d.ts +2 -1
- package/dist/styles/theme.types.d.ts.map +1 -1
- package/dist/styles/theme.types.js +2 -1
- package/dist/tabs-B0g7YtQv.js +123 -0
- package/dist/tabs-B0g7YtQv.js.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/{context-BFXNJVn2.js → use-translations-DSltA7H_.js} +38 -30
- package/dist/use-translations-DSltA7H_.js.map +1 -0
- package/package.json +99 -86
- package/ai/docs/TransferList.md +0 -142
- package/dist/autocomplete-Cn9Z2hLq.js +0 -375
- package/dist/autocomplete-Cn9Z2hLq.js.map +0 -1
- package/dist/calendar-B5lSd0ID.js.map +0 -1
- package/dist/components/form/transfer-list.d.ts +0 -14
- package/dist/components/form/transfer-list.d.ts.map +0 -1
- package/dist/components/form/transfer-list.js +0 -55
- package/dist/components/form/transfer-list.js.map +0 -1
- package/dist/context-BFXNJVn2.js.map +0 -1
- package/dist/date-picker-DwNo22lx.js.map +0 -1
- package/dist/dom-Dl8XH0CK.js.map +0 -1
- package/dist/file-upload-Brf2NkLr.js.map +0 -1
- package/dist/floating-ui.react-QNHG9W4N.js.map +0 -1
- package/dist/fns-D2eyJKd5.js.map +0 -1
- package/dist/index-BelDtX5M.js.map +0 -1
- package/dist/index-DJSMaZR4.js.map +0 -1
- package/dist/index-Z-fZHxfJ.js +0 -335
- package/dist/index-Z-fZHxfJ.js.map +0 -1
- package/dist/input-CrGrSnUt.js.map +0 -1
- package/dist/input-field-5vYcz5tT.js.map +0 -1
- package/dist/notifications-cUdVPs-B.js +0 -2786
- package/dist/notifications-cUdVPs-B.js.map +0 -1
- package/dist/skeleton-D75GFBV6.js +0 -10
- package/dist/skeleton-D75GFBV6.js.map +0 -1
- package/dist/tabs-S00a8qq8.js +0 -106
- package/dist/tabs-S00a8qq8.js.map +0 -1
- package/dist/use-translations-BwLKTrZv.js +0 -10
- package/dist/use-translations-BwLKTrZv.js.map +0 -1
package/ai/docs/Select.md
CHANGED
|
@@ -19,44 +19,44 @@ import { Select } from "@g4rcez/components/select";
|
|
|
19
19
|
|
|
20
20
|
## Props
|
|
21
21
|
|
|
22
|
-
| Prop
|
|
23
|
-
|
|
24
|
-
| `options`
|
|
25
|
-
| `selectContainer`
|
|
26
|
-
| `required`
|
|
27
|
-
| `error`
|
|
28
|
-
| `loading`
|
|
29
|
-
| `disabled`
|
|
30
|
-
| `placeholder`
|
|
31
|
-
| `value`
|
|
32
|
-
| `onChange`
|
|
33
|
-
| `...inputFieldProps` | `InputFieldProps`
|
|
22
|
+
| Prop | Type | Default | Description |
|
|
23
|
+
| -------------------- | --------------------------------------------- | ------- | ------------------------------------------------------------ |
|
|
24
|
+
| `options` | `OptionProps[]` | — | Array of option objects. |
|
|
25
|
+
| `selectContainer` | `string` | `""` | Additional CSS classes for the select container. |
|
|
26
|
+
| `required` | `boolean` | `true` | Whether the field is required. |
|
|
27
|
+
| `error` | `string` | — | Error message to display. |
|
|
28
|
+
| `loading` | `boolean` | `false` | Shows a loading indicator and disables the field. |
|
|
29
|
+
| `disabled` | `boolean` | `false` | Disables the select. |
|
|
30
|
+
| `placeholder` | `string` | — | Placeholder shown as a disabled hidden option. |
|
|
31
|
+
| `value` | `string` | — | Controlled selected value. |
|
|
32
|
+
| `onChange` | `(e: ChangeEvent<HTMLSelectElement>) => void` | — | Change handler. |
|
|
33
|
+
| `...inputFieldProps` | `InputFieldProps` | — | All `InputField` props (title, left, right, feedback, etc.). |
|
|
34
34
|
|
|
35
35
|
### OptionProps
|
|
36
36
|
|
|
37
|
-
| Prop
|
|
38
|
-
|
|
39
|
-
| `value`
|
|
40
|
-
| `label`
|
|
41
|
-
| `disabled`
|
|
42
|
-
| `data-dynamic` | `string`
|
|
43
|
-
| `data-*`
|
|
37
|
+
| Prop | Type | Description |
|
|
38
|
+
| -------------- | --------- | ------------------------------------------------------- |
|
|
39
|
+
| `value` | `string` | Option value (required). |
|
|
40
|
+
| `label` | `string` | Display text (falls back to `value` if omitted). |
|
|
41
|
+
| `disabled` | `boolean` | Disables this individual option. |
|
|
42
|
+
| `data-dynamic` | `string` | Marks a dynamically generated option. |
|
|
43
|
+
| `data-*` | `string` | Any custom data attributes forwarded to the `<option>`. |
|
|
44
44
|
|
|
45
45
|
## Design Tokens
|
|
46
46
|
|
|
47
47
|
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
48
48
|
|
|
49
|
-
| Token
|
|
50
|
-
|
|
51
|
-
| `text-foreground`
|
|
52
|
-
| `text-input-placeholder`
|
|
53
|
-
| `placeholder-input-placeholder`
|
|
54
|
-
| `bg-input-mask-error` (via `group-error`) | `--input-mask-error`
|
|
55
|
-
| `text-danger` (via `group-error`)
|
|
56
|
-
| `hover:text-primary`
|
|
57
|
-
| `h-input-height`
|
|
58
|
-
| `px-input-x`
|
|
59
|
-
| `py-input-y`
|
|
49
|
+
| Token | CSS Variable | Purpose |
|
|
50
|
+
| ----------------------------------------- | --------------------- | -------------------------------- |
|
|
51
|
+
| `text-foreground` | `--foreground` | Selected option text color |
|
|
52
|
+
| `text-input-placeholder` | `--input-placeholder` | Color when no option is selected |
|
|
53
|
+
| `placeholder-input-placeholder` | `--input-placeholder` | Placeholder styling |
|
|
54
|
+
| `bg-input-mask-error` (via `group-error`) | `--input-mask-error` | Placeholder tint in error state |
|
|
55
|
+
| `text-danger` (via `group-error`) | `--danger` | Text color in error state |
|
|
56
|
+
| `hover:text-primary` | `--primary` | Caret icon hover color |
|
|
57
|
+
| `h-input-height` | `--input-height` | Control height (2.5 rem) |
|
|
58
|
+
| `px-input-x` | `--input-x` | Horizontal padding |
|
|
59
|
+
| `py-input-y` | `--input-y` | Vertical padding |
|
|
60
60
|
|
|
61
61
|
## Examples
|
|
62
62
|
|
|
@@ -67,21 +67,21 @@ import { useState } from "react";
|
|
|
67
67
|
import { Select } from "@g4rcez/components/select";
|
|
68
68
|
|
|
69
69
|
export default function FruitPicker() {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
70
|
+
const [value, setValue] = useState("");
|
|
71
|
+
|
|
72
|
+
return (
|
|
73
|
+
<Select
|
|
74
|
+
title="Fruit"
|
|
75
|
+
options={[
|
|
76
|
+
{ value: "apple", label: "Apple" },
|
|
77
|
+
{ value: "banana", label: "Banana" },
|
|
78
|
+
{ value: "orange", label: "Orange" },
|
|
79
|
+
]}
|
|
80
|
+
placeholder="Select a fruit"
|
|
81
|
+
value={value}
|
|
82
|
+
onChange={(e) => setValue(e.target.value)}
|
|
83
|
+
/>
|
|
84
|
+
);
|
|
85
85
|
}
|
|
86
86
|
```
|
|
87
87
|
|
|
@@ -92,27 +92,27 @@ import { useState } from "react";
|
|
|
92
92
|
import { Select } from "@g4rcez/components/select";
|
|
93
93
|
|
|
94
94
|
export default function CountrySelect() {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
95
|
+
const [country, setCountry] = useState("");
|
|
96
|
+
const [error, setError] = useState("");
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<Select
|
|
100
|
+
title="Country"
|
|
101
|
+
options={[
|
|
102
|
+
{ value: "us", label: "United States" },
|
|
103
|
+
{ value: "ca", label: "Canada" },
|
|
104
|
+
{ value: "uk", label: "United Kingdom" },
|
|
105
|
+
]}
|
|
106
|
+
placeholder="Select country"
|
|
107
|
+
value={country}
|
|
108
|
+
error={error}
|
|
109
|
+
required
|
|
110
|
+
onChange={(e) => {
|
|
111
|
+
setCountry(e.target.value);
|
|
112
|
+
setError(e.target.value ? "" : "Please select a country");
|
|
113
|
+
}}
|
|
114
|
+
/>
|
|
115
|
+
);
|
|
116
116
|
}
|
|
117
117
|
```
|
|
118
118
|
|
|
@@ -122,18 +122,18 @@ export default function CountrySelect() {
|
|
|
122
122
|
import { Select } from "@g4rcez/components/select";
|
|
123
123
|
|
|
124
124
|
export default function StatusSelect() {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
125
|
+
return (
|
|
126
|
+
<Select
|
|
127
|
+
title="Status"
|
|
128
|
+
options={[
|
|
129
|
+
{ value: "active", label: "Active" },
|
|
130
|
+
{ value: "pending", label: "Pending" },
|
|
131
|
+
{ value: "legacy", label: "Legacy (deprecated)", disabled: true },
|
|
132
|
+
{ value: "inactive", label: "Inactive" },
|
|
133
|
+
]}
|
|
134
|
+
placeholder="Select status"
|
|
135
|
+
/>
|
|
136
|
+
);
|
|
137
137
|
}
|
|
138
138
|
```
|
|
139
139
|
|
|
@@ -144,29 +144,29 @@ import { useEffect, useState } from "react";
|
|
|
144
144
|
import { Select } from "@g4rcez/components/select";
|
|
145
145
|
|
|
146
146
|
export default function AsyncSelect() {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
147
|
+
const [options, setOptions] = useState<{ value: string; label: string }[]>([]);
|
|
148
|
+
const [loading, setLoading] = useState(false);
|
|
149
|
+
const [value, setValue] = useState("");
|
|
150
|
+
|
|
151
|
+
useEffect(() => {
|
|
152
|
+
setLoading(true);
|
|
153
|
+
fetchOptions().then((data) => {
|
|
154
|
+
setOptions(data);
|
|
155
|
+
setLoading(false);
|
|
156
|
+
});
|
|
157
|
+
}, []);
|
|
158
|
+
|
|
159
|
+
return (
|
|
160
|
+
<Select
|
|
161
|
+
title="Region"
|
|
162
|
+
options={options}
|
|
163
|
+
placeholder={loading ? "Loading..." : "Select a region"}
|
|
164
|
+
value={value}
|
|
165
|
+
loading={loading}
|
|
166
|
+
disabled={loading}
|
|
167
|
+
onChange={(e) => setValue(e.target.value)}
|
|
168
|
+
/>
|
|
169
|
+
);
|
|
170
170
|
}
|
|
171
171
|
```
|
|
172
172
|
|
|
@@ -177,21 +177,21 @@ import { Select } from "@g4rcez/components/select";
|
|
|
177
177
|
import { useForm } from "@g4rcez/components/form";
|
|
178
178
|
|
|
179
179
|
export default function UserForm() {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
180
|
+
const form = useForm(schema, "userForm");
|
|
181
|
+
|
|
182
|
+
return (
|
|
183
|
+
<form {...form.props}>
|
|
184
|
+
<Select
|
|
185
|
+
{...form.select("role")}
|
|
186
|
+
options={[
|
|
187
|
+
{ value: "admin", label: "Administrator" },
|
|
188
|
+
{ value: "editor", label: "Editor" },
|
|
189
|
+
{ value: "viewer", label: "Viewer" },
|
|
190
|
+
]}
|
|
191
|
+
placeholder="Select role"
|
|
192
|
+
/>
|
|
193
|
+
</form>
|
|
194
|
+
);
|
|
195
195
|
}
|
|
196
196
|
```
|
|
197
197
|
|
|
@@ -202,47 +202,47 @@ import { useState } from "react";
|
|
|
202
202
|
import { Select } from "@g4rcez/components/select";
|
|
203
203
|
|
|
204
204
|
const subcategories: Record<string, { value: string; label: string }[]> = {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
205
|
+
electronics: [
|
|
206
|
+
{ value: "phones", label: "Phones" },
|
|
207
|
+
{ value: "laptops", label: "Laptops" },
|
|
208
|
+
],
|
|
209
|
+
clothing: [
|
|
210
|
+
{ value: "shirts", label: "Shirts" },
|
|
211
|
+
{ value: "pants", label: "Pants" },
|
|
212
|
+
],
|
|
213
213
|
};
|
|
214
214
|
|
|
215
215
|
export default function CascadingSelect() {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
216
|
+
const [category, setCategory] = useState("");
|
|
217
|
+
const [subcategory, setSubcategory] = useState("");
|
|
218
|
+
|
|
219
|
+
return (
|
|
220
|
+
<div className="flex flex-col gap-base">
|
|
221
|
+
<Select
|
|
222
|
+
title="Category"
|
|
223
|
+
options={[
|
|
224
|
+
{ value: "electronics", label: "Electronics" },
|
|
225
|
+
{ value: "clothing", label: "Clothing" },
|
|
226
|
+
]}
|
|
227
|
+
placeholder="Select category"
|
|
228
|
+
value={category}
|
|
229
|
+
onChange={(e) => {
|
|
230
|
+
setCategory(e.target.value);
|
|
231
|
+
setSubcategory("");
|
|
232
|
+
}}
|
|
233
|
+
/>
|
|
234
|
+
|
|
235
|
+
{category && (
|
|
236
|
+
<Select
|
|
237
|
+
title="Subcategory"
|
|
238
|
+
options={subcategories[category] ?? []}
|
|
239
|
+
placeholder="Select subcategory"
|
|
240
|
+
value={subcategory}
|
|
241
|
+
onChange={(e) => setSubcategory(e.target.value)}
|
|
242
|
+
/>
|
|
243
|
+
)}
|
|
244
|
+
</div>
|
|
245
|
+
);
|
|
246
246
|
}
|
|
247
247
|
```
|
|
248
248
|
|
|
@@ -271,10 +271,10 @@ export default function CascadingSelect() {
|
|
|
271
271
|
|
|
272
272
|
## Data Attributes
|
|
273
273
|
|
|
274
|
-
| Attribute
|
|
275
|
-
|
|
276
|
-
| `data-component` | `InputField` root | `"select"`
|
|
277
|
-
| `data-selected`
|
|
274
|
+
| Attribute | Element | Value | Description |
|
|
275
|
+
| ---------------- | ----------------- | ------------------- | --------------------------------------------- |
|
|
276
|
+
| `data-component` | `InputField` root | `"select"` | Identifies the component. |
|
|
277
|
+
| `data-selected` | `<select>` | `"true" \| "false"` | Whether a non-placeholder option is selected. |
|
|
278
278
|
|
|
279
279
|
## Notes
|
|
280
280
|
|
package/ai/docs/Shortcut.md
CHANGED
|
@@ -19,9 +19,9 @@ import { Shortcut } from "@g4rcez/components";
|
|
|
19
19
|
|
|
20
20
|
## Props
|
|
21
21
|
|
|
22
|
-
| Prop
|
|
23
|
-
|
|
24
|
-
| `value` | `string` | —
|
|
22
|
+
| Prop | Type | Default | Description |
|
|
23
|
+
| ------- | -------- | ------- | ------------------------------------------------------------------- |
|
|
24
|
+
| `value` | `string` | — | Shortcut string to display, e.g. `"Mod + K"` or `"Shift + Alt + P"` |
|
|
25
25
|
|
|
26
26
|
## Design Tokens
|
|
27
27
|
|
|
@@ -31,10 +31,10 @@ The `Shortcut` component inherits text color and size from its parent. No compon
|
|
|
31
31
|
|
|
32
32
|
The component automatically maps keys based on the user's operating system:
|
|
33
33
|
|
|
34
|
-
| Key token | macOS
|
|
35
|
-
|
|
36
|
-
| `Mod`
|
|
37
|
-
| `Alt`
|
|
34
|
+
| Key token | macOS | Other |
|
|
35
|
+
| --------- | ------------------------------ | ------ |
|
|
36
|
+
| `Mod` | `⌘` (CommandIcon, `size={12}`) | `Ctrl` |
|
|
37
|
+
| `Alt` | `⌥` (OptionIcon, `size={12}`) | `Alt` |
|
|
38
38
|
|
|
39
39
|
All other key tokens are rendered as-is.
|
|
40
40
|
|
|
@@ -50,9 +50,9 @@ All other key tokens are rendered as-is.
|
|
|
50
50
|
|
|
51
51
|
```tsx
|
|
52
52
|
<Tooltip title="Save changes">
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
<div className="flex gap-2 items-center">
|
|
54
|
+
Save <Shortcut value="Mod + S" />
|
|
55
|
+
</div>
|
|
56
56
|
</Tooltip>
|
|
57
57
|
```
|
|
58
58
|
|
|
@@ -60,8 +60,8 @@ All other key tokens are rendered as-is.
|
|
|
60
60
|
|
|
61
61
|
```tsx
|
|
62
62
|
<div className="flex items-center justify-between w-full">
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
<span>Open command palette</span>
|
|
64
|
+
<Shortcut value="Mod + K" />
|
|
65
65
|
</div>
|
|
66
66
|
```
|
|
67
67
|
|
|
@@ -76,8 +76,8 @@ All other key tokens are rendered as-is.
|
|
|
76
76
|
|
|
77
77
|
```tsx
|
|
78
78
|
<div className="flex items-center justify-between px-4 py-2">
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
<span className="text-foreground">New File</span>
|
|
80
|
+
<Shortcut value="Mod + N" />
|
|
81
81
|
</div>
|
|
82
82
|
```
|
|
83
83
|
|
package/ai/docs/Skeleton.md
CHANGED
|
@@ -27,11 +27,11 @@ A pre-built table-cell skeleton with `h-6 w-10/12 animate-pulse rounded bg-muted
|
|
|
27
27
|
|
|
28
28
|
A configurable block skeleton.
|
|
29
29
|
|
|
30
|
-
| Prop
|
|
31
|
-
|
|
32
|
-
| `className` | `string`
|
|
33
|
-
| `as`
|
|
34
|
-
| `style`
|
|
30
|
+
| Prop | Type | Default | Description |
|
|
31
|
+
| ----------- | ------------------- | -------- | --------------------------------------- |
|
|
32
|
+
| `className` | `string` | — | Override or extend dimensions and shape |
|
|
33
|
+
| `as` | `React.ElementType` | `"span"` | Polymorphic root element |
|
|
34
|
+
| `style` | `CSSProperties` | — | Inline styles (e.g. dynamic `width`) |
|
|
35
35
|
|
|
36
36
|
Default appearance: `block h-8 w-32 animate-pulse rounded bg-muted`.
|
|
37
37
|
|
|
@@ -39,18 +39,18 @@ Default appearance: `block h-8 w-32 animate-pulse rounded bg-muted`.
|
|
|
39
39
|
|
|
40
40
|
A vertical list of randomized-width `Skeleton` lines.
|
|
41
41
|
|
|
42
|
-
| Prop
|
|
43
|
-
|
|
44
|
-
| `rows`
|
|
45
|
-
| `className` | `string` | —
|
|
42
|
+
| Prop | Type | Default | Description |
|
|
43
|
+
| ----------- | -------- | ------- | ------------------------------------------- |
|
|
44
|
+
| `rows` | `number` | — | Number of skeleton lines to render |
|
|
45
|
+
| `className` | `string` | — | Additional classes for the `<ul>` container |
|
|
46
46
|
|
|
47
47
|
## Design Tokens
|
|
48
48
|
|
|
49
49
|
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
50
50
|
|
|
51
|
-
| Token
|
|
52
|
-
|
|
53
|
-
| `bg-muted` | `--muted`
|
|
51
|
+
| Token | CSS Variable | Purpose |
|
|
52
|
+
| ---------- | ------------ | ---------------------------------------------------- |
|
|
53
|
+
| `bg-muted` | `--muted` | Pulse animation background for all skeleton variants |
|
|
54
54
|
|
|
55
55
|
## Examples
|
|
56
56
|
|
|
@@ -58,19 +58,25 @@ Tokens this component reads. Customize by overriding these CSS variables in your
|
|
|
58
58
|
|
|
59
59
|
```tsx
|
|
60
60
|
function TableSkeleton() {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
61
|
+
return (
|
|
62
|
+
<table className="w-full">
|
|
63
|
+
<tbody>
|
|
64
|
+
{Array.from({ length: 5 }).map((_, index) => (
|
|
65
|
+
<tr key={index} className="border-b border-border">
|
|
66
|
+
<td className="py-3 px-4">
|
|
67
|
+
<SkeletonCell />
|
|
68
|
+
</td>
|
|
69
|
+
<td className="py-3 px-4">
|
|
70
|
+
<SkeletonCell />
|
|
71
|
+
</td>
|
|
72
|
+
<td className="py-3 px-4">
|
|
73
|
+
<SkeletonCell />
|
|
74
|
+
</td>
|
|
75
|
+
</tr>
|
|
76
|
+
))}
|
|
77
|
+
</tbody>
|
|
78
|
+
</table>
|
|
79
|
+
);
|
|
74
80
|
}
|
|
75
81
|
```
|
|
76
82
|
|
|
@@ -78,20 +84,20 @@ function TableSkeleton() {
|
|
|
78
84
|
|
|
79
85
|
```tsx
|
|
80
86
|
function CardSkeleton() {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
return (
|
|
88
|
+
<div className="rounded-card border border-card-border bg-card-background p-6 space-y-4">
|
|
89
|
+
<Skeleton className="h-4 w-3/4" />
|
|
90
|
+
<div className="space-y-2">
|
|
91
|
+
<SkeletonCell />
|
|
92
|
+
<SkeletonCell />
|
|
93
|
+
<Skeleton className="h-2 w-1/2" />
|
|
94
|
+
</div>
|
|
95
|
+
<div className="flex gap-2">
|
|
96
|
+
<Skeleton className="h-8 w-20" />
|
|
97
|
+
<Skeleton className="h-8 w-16" />
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
);
|
|
95
101
|
}
|
|
96
102
|
```
|
|
97
103
|
|
|
@@ -105,15 +111,7 @@ function CardSkeleton() {
|
|
|
105
111
|
|
|
106
112
|
```tsx
|
|
107
113
|
function DataSection({ data, loading }: { data?: Item; loading: boolean }) {
|
|
108
|
-
|
|
109
|
-
<div>
|
|
110
|
-
{loading ? (
|
|
111
|
-
<Skeleton className="h-6 w-full" />
|
|
112
|
-
) : (
|
|
113
|
-
<p>{data?.name}</p>
|
|
114
|
-
)}
|
|
115
|
-
</div>
|
|
116
|
-
);
|
|
114
|
+
return <div>{loading ? <Skeleton className="h-6 w-full" /> : <p>{data?.name}</p>}</div>;
|
|
117
115
|
}
|
|
118
116
|
```
|
|
119
117
|
|
|
@@ -121,15 +119,15 @@ function DataSection({ data, loading }: { data?: Item; loading: boolean }) {
|
|
|
121
119
|
|
|
122
120
|
```tsx
|
|
123
121
|
function UserRowSkeleton() {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
122
|
+
return (
|
|
123
|
+
<div className="flex items-center gap-3">
|
|
124
|
+
<Skeleton className="size-10 rounded-full" />
|
|
125
|
+
<div className="flex-1 space-y-1">
|
|
126
|
+
<SkeletonCell />
|
|
127
|
+
<Skeleton className="h-2 w-1/3" />
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
);
|
|
133
131
|
}
|
|
134
132
|
```
|
|
135
133
|
|
|
@@ -155,9 +153,7 @@ function UserRowSkeleton() {
|
|
|
155
153
|
- Consider `aria-label="Loading content"` on the skeleton container for additional context.
|
|
156
154
|
|
|
157
155
|
```tsx
|
|
158
|
-
<div aria-live="polite">
|
|
159
|
-
{loading ? <SkeletonCell /> : <ActualContent />}
|
|
160
|
-
</div>
|
|
156
|
+
<div aria-live="polite">{loading ? <SkeletonCell /> : <ActualContent />}</div>
|
|
161
157
|
```
|
|
162
158
|
|
|
163
159
|
## Notes
|