@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/Switch.md
CHANGED
|
@@ -21,27 +21,27 @@ import { Switch } from "@g4rcez/components/switch";
|
|
|
21
21
|
|
|
22
22
|
Inherits all standard HTML `input[type="checkbox"]` attributes, plus:
|
|
23
23
|
|
|
24
|
-
| Prop
|
|
25
|
-
|
|
26
|
-
| `children`
|
|
27
|
-
| `onCheck`
|
|
28
|
-
| `error`
|
|
29
|
-
| `loading`
|
|
30
|
-
| `container` | `string`
|
|
24
|
+
| Prop | Type | Default | Description |
|
|
25
|
+
| ----------- | ------------------------------ | ------- | ---------------------------------------------------- |
|
|
26
|
+
| `children` | `React.ReactNode` | — | Label text or element displayed next to the switch. |
|
|
27
|
+
| `onCheck` | `(nextValue: boolean) => void` | — | Called with the new boolean value after toggling. |
|
|
28
|
+
| `error` | `string` | — | Error message displayed below the switch. |
|
|
29
|
+
| `loading` | `boolean` | `false` | Disables the switch and signals a pending operation. |
|
|
30
|
+
| `container` | `string` | — | Additional CSS classes for the outer `<fieldset>`. |
|
|
31
31
|
|
|
32
32
|
## Design Tokens
|
|
33
33
|
|
|
34
34
|
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
35
35
|
|
|
36
|
-
| Token
|
|
37
|
-
|
|
36
|
+
| Token | CSS Variable | Purpose |
|
|
37
|
+
| -------------------- | ------------------- | ------------------------------- |
|
|
38
38
|
| `bg-input-switch-bg` | `--input-switch-bg` | Track background when unchecked |
|
|
39
|
-
| `bg-primary`
|
|
40
|
-
| `bg-disabled`
|
|
41
|
-
| `bg-input-switch`
|
|
42
|
-
| `focus:ring-primary` | `--primary`
|
|
43
|
-
| `text-danger`
|
|
44
|
-
| `text-foreground`
|
|
39
|
+
| `bg-primary` | `--primary` | Track background when checked |
|
|
40
|
+
| `bg-disabled` | `--disabled` | Thumb fill when unchecked |
|
|
41
|
+
| `bg-input-switch` | `--input-switch` | Thumb fill when checked |
|
|
42
|
+
| `focus:ring-primary` | `--primary` | Focus ring on the toggle button |
|
|
43
|
+
| `text-danger` | `--danger` | Error message color |
|
|
44
|
+
| `text-foreground` | `--foreground` | Label text color |
|
|
45
45
|
|
|
46
46
|
## Themes
|
|
47
47
|
|
|
@@ -55,11 +55,11 @@ The switch appearance is driven entirely by design tokens. Override them in your
|
|
|
55
55
|
import { Switch } from "@g4rcez/components/switch";
|
|
56
56
|
|
|
57
57
|
export default function NotificationsToggle() {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
return (
|
|
59
|
+
<Switch defaultChecked onChange={(e) => console.log(e.target.checked)}>
|
|
60
|
+
Enable notifications
|
|
61
|
+
</Switch>
|
|
62
|
+
);
|
|
63
63
|
}
|
|
64
64
|
```
|
|
65
65
|
|
|
@@ -70,13 +70,13 @@ import { useState } from "react";
|
|
|
70
70
|
import { Switch } from "@g4rcez/components/switch";
|
|
71
71
|
|
|
72
72
|
export default function DarkModeToggle() {
|
|
73
|
-
|
|
73
|
+
const [enabled, setEnabled] = useState(false);
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
return (
|
|
76
|
+
<Switch checked={enabled} onCheck={setEnabled}>
|
|
77
|
+
Dark mode
|
|
78
|
+
</Switch>
|
|
79
|
+
);
|
|
80
80
|
}
|
|
81
81
|
```
|
|
82
82
|
|
|
@@ -86,11 +86,7 @@ export default function DarkModeToggle() {
|
|
|
86
86
|
import { Switch } from "@g4rcez/components/switch";
|
|
87
87
|
|
|
88
88
|
export default function SyncSwitch() {
|
|
89
|
-
|
|
90
|
-
<Switch loading>
|
|
91
|
-
Syncing data…
|
|
92
|
-
</Switch>
|
|
93
|
-
);
|
|
89
|
+
return <Switch loading>Syncing data…</Switch>;
|
|
94
90
|
}
|
|
95
91
|
```
|
|
96
92
|
|
|
@@ -100,11 +96,7 @@ export default function SyncSwitch() {
|
|
|
100
96
|
import { Switch } from "@g4rcez/components/switch";
|
|
101
97
|
|
|
102
98
|
export default function TermsSwitch() {
|
|
103
|
-
|
|
104
|
-
<Switch error="You must accept the terms to continue">
|
|
105
|
-
Accept terms and conditions
|
|
106
|
-
</Switch>
|
|
107
|
-
);
|
|
99
|
+
return <Switch error="You must accept the terms to continue">Accept terms and conditions</Switch>;
|
|
108
100
|
}
|
|
109
101
|
```
|
|
110
102
|
|
|
@@ -114,19 +106,17 @@ export default function TermsSwitch() {
|
|
|
114
106
|
import { Switch } from "@g4rcez/components/switch";
|
|
115
107
|
|
|
116
108
|
export default function PrivacySettings() {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
</div>
|
|
129
|
-
);
|
|
109
|
+
return (
|
|
110
|
+
<div className="flex flex-col gap-base">
|
|
111
|
+
<Switch defaultChecked onCheck={(v) => updateSetting("emails", v)}>
|
|
112
|
+
Receive marketing emails
|
|
113
|
+
</Switch>
|
|
114
|
+
<Switch onCheck={(v) => updateSetting("analytics", v)}>Share analytics data</Switch>
|
|
115
|
+
<Switch defaultChecked onCheck={(v) => updateSetting("notifications", v)}>
|
|
116
|
+
Push notifications
|
|
117
|
+
</Switch>
|
|
118
|
+
</div>
|
|
119
|
+
);
|
|
130
120
|
}
|
|
131
121
|
```
|
|
132
122
|
|
|
@@ -154,11 +144,11 @@ export default function PrivacySettings() {
|
|
|
154
144
|
|
|
155
145
|
## Data Attributes
|
|
156
146
|
|
|
157
|
-
| Attribute
|
|
158
|
-
|
|
159
|
-
| `data-component` | `fieldset`
|
|
160
|
-
| `data-checked`
|
|
161
|
-
| `data-trigger`
|
|
147
|
+
| Attribute | Element | Value | Description |
|
|
148
|
+
| ---------------- | ------------------------------- | ------------------- | ---------------------------------------------------- |
|
|
149
|
+
| `data-component` | `fieldset` | `"switch"` | Identifies the component. |
|
|
150
|
+
| `data-checked` | `input`, `button`, thumb `span` | `"true" \| "false"` | Reflects the checked state for CSS targeting. |
|
|
151
|
+
| `data-trigger` | `input` | `"change"` | Used internally to track the synthetic change event. |
|
|
162
152
|
|
|
163
153
|
## Notes
|
|
164
154
|
|
package/ai/docs/Table.md
CHANGED
|
@@ -21,25 +21,25 @@ import { Table, createColumns, useTablePreferences, ColType } from "@g4rcez/comp
|
|
|
21
21
|
|
|
22
22
|
### Table
|
|
23
23
|
|
|
24
|
-
| Prop
|
|
25
|
-
|
|
26
|
-
| `name`
|
|
27
|
-
| `cols`
|
|
28
|
-
| `rows`
|
|
29
|
-
| `loading`
|
|
30
|
-
| `loadingMore`
|
|
31
|
-
| `operations`
|
|
32
|
-
| `inlineFilter` | `boolean`
|
|
33
|
-
| `inlineSorter` | `boolean`
|
|
34
|
-
| `sticky`
|
|
35
|
-
| `Aside`
|
|
36
|
-
| `pagination`
|
|
37
|
-
| `reference`
|
|
38
|
-
| `useControl`
|
|
39
|
-
| `onScrollEnd`
|
|
40
|
-
| `getScrollRef` | `() => HTMLElement \| undefined`
|
|
41
|
-
| `getRowProps`
|
|
42
|
-
| `set`
|
|
24
|
+
| Prop | Type | Default | Description |
|
|
25
|
+
| -------------- | ---------------------------------- | ------- | -------------------------------------------------------------------------------- |
|
|
26
|
+
| `name` | `string` | — | Unique identifier used to persist user preferences in `localStorage`. |
|
|
27
|
+
| `cols` | `Col<T>[]` | — | Column definitions produced by `createColumns`. |
|
|
28
|
+
| `rows` | `T[]` | — | Data array to render. Each element maps to a table row. |
|
|
29
|
+
| `loading` | `boolean` | `false` | Replaces rows with animated skeleton cells while data loads. |
|
|
30
|
+
| `loadingMore` | `boolean` | `false` | Shows a pulse footer bar for infinite-scroll loading indicators. |
|
|
31
|
+
| `operations` | `boolean` | `true` | Toggles the metadata bar (bulk filter, sort, group controls). |
|
|
32
|
+
| `inlineFilter` | `boolean` | `true` | Enables per-column filter dropdowns in the header row. |
|
|
33
|
+
| `inlineSorter` | `boolean` | `true` | Enables per-column sort toggles in the header row. |
|
|
34
|
+
| `sticky` | `number \| null` | — | `top` offset in px for the sticky header. Pass `null` to disable stickiness. |
|
|
35
|
+
| `Aside` | `React.FC<CellAsideElement<T>>` | — | Component rendered before the first cell in every row (e.g., row-level actions). |
|
|
36
|
+
| `pagination` | `TablePagination` | — | Pagination configuration. When provided, a footer with page controls is shown. |
|
|
37
|
+
| `reference` | `keyof T` | — | Field used as the stable row key. |
|
|
38
|
+
| `useControl` | `boolean` | `false` | When `true`, disables internal filtering/sorting so you can drive it externally. |
|
|
39
|
+
| `onScrollEnd` | `() => void` | — | Called when the user scrolls to the last row (infinite scroll trigger). |
|
|
40
|
+
| `getScrollRef` | `() => HTMLElement \| undefined` | — | Returns a custom scroll container instead of `window`. |
|
|
41
|
+
| `getRowProps` | `(row: T) => ComponentProps<"tr">` | — | Merge arbitrary `<tr>` props (e.g., `onClick`, `className`) per row. |
|
|
42
|
+
| `set` | `(v: TableGetters<T>) => void` | — | External callback invoked whenever internal table state changes. |
|
|
43
43
|
|
|
44
44
|
### createColumns
|
|
45
45
|
|
|
@@ -52,38 +52,38 @@ createColumns<T>((c) => {
|
|
|
52
52
|
})
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
| Builder method | Signature
|
|
56
|
-
|
|
57
|
-
| `add`
|
|
58
|
-
| `remove`
|
|
59
|
-
| `filter`
|
|
60
|
-
| `getAll`
|
|
55
|
+
| Builder method | Signature | Description |
|
|
56
|
+
| -------------- | ------------------------------------------------------------------------- | ----------------------------------------- |
|
|
57
|
+
| `add` | `(id: AllPaths<T>, thead: ReactNode, options?: ColOptions<T, K>) => void` | Registers a column. |
|
|
58
|
+
| `remove` | `(id: AllPaths<T>) => void` | Removes a column by id. |
|
|
59
|
+
| `filter` | `(c: (col: Col<T>) => boolean) => Col<T>[]` | Filters the column list in-place. |
|
|
60
|
+
| `getAll` | `() => Col<T>[]` | Returns a copy of all registered columns. |
|
|
61
61
|
|
|
62
62
|
### ColOptions
|
|
63
63
|
|
|
64
|
-
| Option
|
|
65
|
-
|
|
66
|
-
| `type`
|
|
67
|
-
| `allowSort`
|
|
68
|
-
| `allowFilter` | `boolean`
|
|
69
|
-
| `headerLabel` | `string`
|
|
70
|
-
| `Element`
|
|
71
|
-
| `thProps`
|
|
72
|
-
| `cellProps`
|
|
64
|
+
| Option | Type | Default | Description |
|
|
65
|
+
| ------------- | -------------------------------------- | -------------- | ---------------------------------------------------------------------------- |
|
|
66
|
+
| `type` | `ColType` | `ColType.Text` | Data type (`Text`, `Number`, `Boolean`, `Select`). Affects filter operators. |
|
|
67
|
+
| `allowSort` | `boolean` | `true` | Whether this column can be sorted. |
|
|
68
|
+
| `allowFilter` | `boolean` | `true` | Whether this column shows a filter control. |
|
|
69
|
+
| `headerLabel` | `string` | — | Overrides the column header text used in the filter/sort metadata bar. |
|
|
70
|
+
| `Element` | `React.FC<CellPropsElement<T, K>>` | — | Custom cell renderer. Receives `{ row, value, rowIndex, matrix, col }`. |
|
|
71
|
+
| `thProps` | `HTMLAttributes<HTMLTableCellElement>` | — | Extra props forwarded to the `<th>` element. |
|
|
72
|
+
| `cellProps` | `HTMLAttributes<HTMLTableCellElement>` | — | Extra props forwarded to each `<td>` element. |
|
|
73
73
|
|
|
74
74
|
### TablePagination
|
|
75
75
|
|
|
76
|
-
| Field
|
|
77
|
-
|
|
78
|
-
| `size`
|
|
79
|
-
| `pages`
|
|
80
|
-
| `current`
|
|
81
|
-
| `hasNext`
|
|
82
|
-
| `hasPrevious`
|
|
83
|
-
| `totalItems`
|
|
84
|
-
| `sizes`
|
|
85
|
-
| `onChangeSize` | `(size: number) => void`
|
|
86
|
-
| `asLink`
|
|
76
|
+
| Field | Type | Description |
|
|
77
|
+
| -------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------- |
|
|
78
|
+
| `size` | `number` | Current page size. |
|
|
79
|
+
| `pages` | `number` | Total number of pages. |
|
|
80
|
+
| `current` | `number` | Current page index (1-based). |
|
|
81
|
+
| `hasNext` | `boolean` | Whether a next page exists. |
|
|
82
|
+
| `hasPrevious` | `boolean` | Whether a previous page exists. |
|
|
83
|
+
| `totalItems` | `number` | Total row count across all pages. |
|
|
84
|
+
| `sizes` | `number[]` | Optional list of selectable page sizes. |
|
|
85
|
+
| `onChangeSize` | `(size: number) => void` | Called when the user selects a different page size. |
|
|
86
|
+
| `asLink` | `React.FC<{ href: number \| "previous" \| "next"; className: string }>` | Polymorphic page button — supply a router `Link` for deep-linkable pages. |
|
|
87
87
|
|
|
88
88
|
### useTablePreferences
|
|
89
89
|
|
|
@@ -94,37 +94,37 @@ const prefs = useTablePreferences("users-table", columns, options?);
|
|
|
94
94
|
// Spread into <Table {...prefs} rows={data} />
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
-
| Parameter | Type
|
|
98
|
-
|
|
99
|
-
| `name`
|
|
100
|
-
| `cols`
|
|
97
|
+
| Parameter | Type | Description |
|
|
98
|
+
| --------- | -------------------------- | -------------------------------------------------------------------------- |
|
|
99
|
+
| `name` | `string` | Storage key (`@components/table-{name}`). |
|
|
100
|
+
| `cols` | `Col<T>[]` | Initial column definitions. |
|
|
101
101
|
| `options` | `Partial<TableGetters<T>>` | Optional initial state overrides for filters, sorters, groups, pagination. |
|
|
102
102
|
|
|
103
103
|
## Design Tokens
|
|
104
104
|
|
|
105
105
|
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
106
106
|
|
|
107
|
-
| Token
|
|
108
|
-
|
|
109
|
-
| `bg-table-header`
|
|
110
|
-
| `bg-table-background` | `--table-background` | Table body background
|
|
111
|
-
| `border-table-border` | `--table-border`
|
|
112
|
-
| `shadow-shadow-table` | `--shadow-table`
|
|
113
|
-
| `bg-card-background`
|
|
114
|
-
| `text-foreground`
|
|
115
|
-
| `text-primary`
|
|
116
|
-
| `bg-muted`
|
|
107
|
+
| Token | CSS Variable | Purpose |
|
|
108
|
+
| --------------------- | -------------------- | --------------------------------------- |
|
|
109
|
+
| `bg-table-header` | `--table-header` | Column header background |
|
|
110
|
+
| `bg-table-background` | `--table-background` | Table body background |
|
|
111
|
+
| `border-table-border` | `--table-border` | Column separator and row divider color |
|
|
112
|
+
| `shadow-shadow-table` | `--shadow-table` | Table card shadow |
|
|
113
|
+
| `bg-card-background` | `--card-background` | Footer and loading-more bar background |
|
|
114
|
+
| `text-foreground` | `--foreground` | Default cell text color |
|
|
115
|
+
| `text-primary` | `--primary` | Active filter / sort accent color |
|
|
116
|
+
| `bg-muted` | `--muted` | Hover background for metadata bar items |
|
|
117
117
|
|
|
118
118
|
The `--table-cell-padding` CSS variable controls cell padding (default `0.75rem`). Override it via `className` on `<Table>`.
|
|
119
119
|
|
|
120
120
|
## Column Types
|
|
121
121
|
|
|
122
|
-
| `ColType`
|
|
123
|
-
|
|
124
|
-
| `ColType.Text`
|
|
125
|
-
| `ColType.Number`
|
|
126
|
-
| `ColType.Boolean` | `"boolean"` | is true, is false
|
|
127
|
-
| `ColType.Select`
|
|
122
|
+
| `ColType` | Enum value | Filter operators available |
|
|
123
|
+
| ----------------- | ----------- | ---------------------------------------- |
|
|
124
|
+
| `ColType.Text` | `"text"` | contains, equals, starts with, ends with |
|
|
125
|
+
| `ColType.Number` | `"number"` | =, ≠, >, <, ≥, ≤ |
|
|
126
|
+
| `ColType.Boolean` | `"boolean"` | is true, is false |
|
|
127
|
+
| `ColType.Select` | `"select"` | equals |
|
|
128
128
|
|
|
129
129
|
## Examples
|
|
130
130
|
|
|
@@ -136,19 +136,13 @@ import { Table, createColumns } from "@g4rcez/components/table";
|
|
|
136
136
|
type User = { id: string; name: string; email: string };
|
|
137
137
|
|
|
138
138
|
const columns = createColumns<User>((c) => {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
c.add("id", "ID");
|
|
140
|
+
c.add("name", "Name");
|
|
141
|
+
c.add("email", "Email");
|
|
142
142
|
});
|
|
143
143
|
|
|
144
144
|
export function UsersTable({ users }: { users: User[] }) {
|
|
145
|
-
|
|
146
|
-
<Table
|
|
147
|
-
name="users"
|
|
148
|
-
cols={columns}
|
|
149
|
-
rows={users}
|
|
150
|
-
/>
|
|
151
|
-
);
|
|
145
|
+
return <Table name="users" cols={columns} rows={users} />;
|
|
152
146
|
}
|
|
153
147
|
```
|
|
154
148
|
|
|
@@ -161,24 +155,22 @@ import { Tag } from "@g4rcez/components/tag";
|
|
|
161
155
|
type Product = { sku: string; name: string; price: number; active: boolean };
|
|
162
156
|
|
|
163
157
|
const columns = createColumns<Product>((c) => {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
),
|
|
181
|
-
});
|
|
158
|
+
c.add("sku", "SKU");
|
|
159
|
+
c.add("name", "Product Name", { allowFilter: true, allowSort: true });
|
|
160
|
+
c.add("price", "Price", {
|
|
161
|
+
type: ColType.Number,
|
|
162
|
+
Element: ({ value }) => (
|
|
163
|
+
<span className="font-mono tabular-nums">{value.toLocaleString("en-US", { style: "currency", currency: "USD" })}</span>
|
|
164
|
+
),
|
|
165
|
+
});
|
|
166
|
+
c.add("active", "Status", {
|
|
167
|
+
type: ColType.Boolean,
|
|
168
|
+
Element: ({ value }) => (
|
|
169
|
+
<Tag theme={value ? "success" : "neutral"} size="small">
|
|
170
|
+
{value ? "Active" : "Inactive"}
|
|
171
|
+
</Tag>
|
|
172
|
+
),
|
|
173
|
+
});
|
|
182
174
|
});
|
|
183
175
|
```
|
|
184
176
|
|
|
@@ -188,14 +180,14 @@ const columns = createColumns<Product>((c) => {
|
|
|
188
180
|
import { Table, createColumns, useTablePreferences } from "@g4rcez/components/table";
|
|
189
181
|
|
|
190
182
|
const baseColumns = createColumns<Order>((c) => {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
183
|
+
c.add("id", "Order ID");
|
|
184
|
+
c.add("status", "Status");
|
|
185
|
+
c.add("total", "Total");
|
|
194
186
|
});
|
|
195
187
|
|
|
196
188
|
export function OrdersTable({ orders }: { orders: Order[] }) {
|
|
197
|
-
|
|
198
|
-
|
|
189
|
+
const prefs = useTablePreferences("orders-table", baseColumns);
|
|
190
|
+
return <Table {...prefs} rows={orders} />;
|
|
199
191
|
}
|
|
200
192
|
```
|
|
201
193
|
|
|
@@ -203,23 +195,25 @@ export function OrdersTable({ orders }: { orders: Order[] }) {
|
|
|
203
195
|
|
|
204
196
|
```tsx
|
|
205
197
|
<Table
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
198
|
+
name="invoices"
|
|
199
|
+
cols={columns}
|
|
200
|
+
rows={pageData}
|
|
201
|
+
useControl
|
|
202
|
+
pagination={{
|
|
203
|
+
current: page,
|
|
204
|
+
pages: totalPages,
|
|
205
|
+
size: pageSize,
|
|
206
|
+
totalItems: totalCount,
|
|
207
|
+
hasNext: page < totalPages,
|
|
208
|
+
hasPrevious: page > 1,
|
|
209
|
+
sizes: [10, 25, 50],
|
|
210
|
+
onChangeSize: setPageSize,
|
|
211
|
+
asLink: ({ href, className, children }) => (
|
|
212
|
+
<a href={`?page=${href}`} className={className}>
|
|
213
|
+
{children}
|
|
214
|
+
</a>
|
|
215
|
+
),
|
|
216
|
+
}}
|
|
223
217
|
/>
|
|
224
218
|
```
|
|
225
219
|
|
|
@@ -229,32 +223,26 @@ export function OrdersTable({ orders }: { orders: Order[] }) {
|
|
|
229
223
|
import { TrashIcon, PencilIcon } from "@phosphor-icons/react";
|
|
230
224
|
|
|
231
225
|
<Table
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
226
|
+
name="contacts"
|
|
227
|
+
cols={columns}
|
|
228
|
+
rows={contacts}
|
|
229
|
+
Aside={({ row }) => (
|
|
230
|
+
<div className="flex gap-1">
|
|
231
|
+
<button onClick={() => edit(row)} aria-label="Edit">
|
|
232
|
+
<PencilIcon size={14} />
|
|
233
|
+
</button>
|
|
234
|
+
<button onClick={() => remove(row)} aria-label="Delete" className="hover:text-danger">
|
|
235
|
+
<TrashIcon size={14} />
|
|
236
|
+
</button>
|
|
237
|
+
</div>
|
|
238
|
+
)}
|
|
239
|
+
/>;
|
|
246
240
|
```
|
|
247
241
|
|
|
248
242
|
### Infinite scroll
|
|
249
243
|
|
|
250
244
|
```tsx
|
|
251
|
-
<Table
|
|
252
|
-
name="feed"
|
|
253
|
-
cols={columns}
|
|
254
|
-
rows={items}
|
|
255
|
-
loadingMore={isFetchingNextPage}
|
|
256
|
-
onScrollEnd={fetchNextPage}
|
|
257
|
-
/>
|
|
245
|
+
<Table name="feed" cols={columns} rows={items} loadingMore={isFetchingNextPage} onScrollEnd={fetchNextPage} />
|
|
258
246
|
```
|
|
259
247
|
|
|
260
248
|
## Do
|