@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/Tabs.md
CHANGED
|
@@ -21,35 +21,35 @@ import { Tabs, Tab } from "@g4rcez/components/tabs";
|
|
|
21
21
|
|
|
22
22
|
### Tabs (Container)
|
|
23
23
|
|
|
24
|
-
| Prop
|
|
25
|
-
|
|
26
|
-
| `active`
|
|
27
|
-
| `onChange`
|
|
28
|
-
| `container` | `string`
|
|
29
|
-
| `className` | `string`
|
|
30
|
-
| `children`
|
|
24
|
+
| Prop | Type | Default | Description |
|
|
25
|
+
| ----------- | ---------------------- | ------- | --------------------------------------------------- |
|
|
26
|
+
| `active` | `string` | — | ID of the currently active tab |
|
|
27
|
+
| `onChange` | `(id: string) => void` | — | Called when the active tab changes |
|
|
28
|
+
| `container` | `string` | — | Additional classes for the outer card container |
|
|
29
|
+
| `className` | `string` | — | Additional classes for the card body (content area) |
|
|
30
|
+
| `children` | `Tab[]` | — | `Tab` panel components |
|
|
31
31
|
|
|
32
32
|
### Tab (Panel)
|
|
33
33
|
|
|
34
|
-
| Prop
|
|
35
|
-
|
|
36
|
-
| `id`
|
|
37
|
-
| `title`
|
|
38
|
-
| `label`
|
|
39
|
-
| `disabled` | `boolean`
|
|
40
|
-
| `children` | `React.ReactNode` | —
|
|
34
|
+
| Prop | Type | Default | Description |
|
|
35
|
+
| ---------- | ----------------- | ------- | --------------------------------------------------------------- |
|
|
36
|
+
| `id` | `string` | — | Unique identifier; matched against `Tabs.active` |
|
|
37
|
+
| `title` | `string` | — | Tab button label (use when label is a plain string) |
|
|
38
|
+
| `label` | `string` | — | Accessible label when `title` is a non-string React element |
|
|
39
|
+
| `disabled` | `boolean` | `false` | Disables the tab button and skips it during keyboard navigation |
|
|
40
|
+
| `children` | `React.ReactNode` | — | Panel content rendered when this tab is active |
|
|
41
41
|
|
|
42
42
|
## Design Tokens
|
|
43
43
|
|
|
44
44
|
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
45
45
|
|
|
46
|
-
| Token
|
|
47
|
-
|
|
48
|
-
| `bg-card-background` | `--card-background` | Tab panel surface
|
|
49
|
-
| `border-card-border` | `--card-border`
|
|
50
|
-
| `border-primary`
|
|
51
|
-
| `text-primary`
|
|
52
|
-
| `text-disabled`
|
|
46
|
+
| Token | CSS Variable | Purpose |
|
|
47
|
+
| -------------------- | ------------------- | ----------------------------------- |
|
|
48
|
+
| `bg-card-background` | `--card-background` | Tab panel surface |
|
|
49
|
+
| `border-card-border` | `--card-border` | Tab bar bottom line and card border |
|
|
50
|
+
| `border-primary` | `--primary` | Active tab bottom indicator |
|
|
51
|
+
| `text-primary` | `--primary` | Active tab text color |
|
|
52
|
+
| `text-disabled` | `--disabled` | Disabled tab text |
|
|
53
53
|
|
|
54
54
|
## Examples
|
|
55
55
|
|
|
@@ -59,38 +59,38 @@ Tokens this component reads. Customize by overriding these CSS variables in your
|
|
|
59
59
|
const [active, setActive] = useState("overview");
|
|
60
60
|
|
|
61
61
|
<Tabs active={active} onChange={setActive}>
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
</Tabs
|
|
62
|
+
<Tab id="overview" title="Overview">
|
|
63
|
+
<h3>Project Overview</h3>
|
|
64
|
+
<p>This is the overview of your project.</p>
|
|
65
|
+
</Tab>
|
|
66
|
+
|
|
67
|
+
<Tab id="details" title="Details">
|
|
68
|
+
<h3>Project Details</h3>
|
|
69
|
+
<p>Detailed information about your project.</p>
|
|
70
|
+
</Tab>
|
|
71
|
+
|
|
72
|
+
<Tab id="settings" title="Settings">
|
|
73
|
+
<h3>Project Settings</h3>
|
|
74
|
+
<p>Configure your project settings here.</p>
|
|
75
|
+
</Tab>
|
|
76
|
+
</Tabs>;
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
### Tabs with Disabled State
|
|
80
80
|
|
|
81
81
|
```tsx
|
|
82
82
|
<Tabs active={activeTab} onChange={setActiveTab}>
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
<Tab id="available" title="Available">
|
|
84
|
+
<p>This tab is available.</p>
|
|
85
|
+
</Tab>
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
<Tab id="locked" title="Locked" disabled>
|
|
88
|
+
<p>This content is not accessible yet.</p>
|
|
89
|
+
</Tab>
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
<Tab id="also-available" title="Also Available">
|
|
92
|
+
<p>This tab is also available.</p>
|
|
93
|
+
</Tab>
|
|
94
94
|
</Tabs>
|
|
95
95
|
```
|
|
96
96
|
|
|
@@ -98,15 +98,15 @@ const [active, setActive] = useState("overview");
|
|
|
98
98
|
|
|
99
99
|
```tsx
|
|
100
100
|
<Tabs active={activeTab} onChange={setActiveTab}>
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
101
|
+
<Tab id="general" title="General">
|
|
102
|
+
<GeneralSettings />
|
|
103
|
+
</Tab>
|
|
104
|
+
<Tab id="privacy" title="Privacy">
|
|
105
|
+
<PrivacySettings />
|
|
106
|
+
</Tab>
|
|
107
|
+
<Tab id="notifications" title="Notifications">
|
|
108
|
+
<NotificationSettings />
|
|
109
|
+
</Tab>
|
|
110
110
|
</Tabs>
|
|
111
111
|
```
|
|
112
112
|
|
|
@@ -114,33 +114,33 @@ const [active, setActive] = useState("overview");
|
|
|
114
114
|
|
|
115
115
|
```tsx
|
|
116
116
|
function DynamicTabs() {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
117
|
+
const [tabs, setTabs] = useState([
|
|
118
|
+
{ id: "tab1", title: "Tab 1", content: "Content 1" },
|
|
119
|
+
{ id: "tab2", title: "Tab 2", content: "Content 2" },
|
|
120
|
+
]);
|
|
121
|
+
const [activeTab, setActiveTab] = useState("tab1");
|
|
122
|
+
|
|
123
|
+
const addTab = () => {
|
|
124
|
+
const newId = `tab${tabs.length + 1}`;
|
|
125
|
+
setTabs([...tabs, { id: newId, title: `Tab ${tabs.length + 1}`, content: `Content ${tabs.length + 1}` }]);
|
|
126
|
+
setActiveTab(newId);
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
return (
|
|
130
|
+
<div className="space-y-4">
|
|
131
|
+
<button onClick={addTab} className="px-3 py-1 bg-primary text-primary-foreground rounded-button">
|
|
132
|
+
Add Tab
|
|
133
|
+
</button>
|
|
134
|
+
|
|
135
|
+
<Tabs active={activeTab} onChange={setActiveTab}>
|
|
136
|
+
{tabs.map((tab) => (
|
|
137
|
+
<Tab key={tab.id} id={tab.id} title={tab.title}>
|
|
138
|
+
<p>{tab.content}</p>
|
|
139
|
+
</Tab>
|
|
140
|
+
))}
|
|
141
|
+
</Tabs>
|
|
142
|
+
</div>
|
|
143
|
+
);
|
|
144
144
|
}
|
|
145
145
|
```
|
|
146
146
|
|
|
@@ -148,15 +148,15 @@ function DynamicTabs() {
|
|
|
148
148
|
|
|
149
149
|
```tsx
|
|
150
150
|
<Tabs active={currentStep} onChange={setCurrentStep}>
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
151
|
+
<Tab id="step1" title="Personal Info">
|
|
152
|
+
<PersonalInfoForm />
|
|
153
|
+
</Tab>
|
|
154
|
+
<Tab id="step2" title="Address" disabled={!step1Complete}>
|
|
155
|
+
<AddressForm />
|
|
156
|
+
</Tab>
|
|
157
|
+
<Tab id="step3" title="Payment" disabled={!step2Complete}>
|
|
158
|
+
<PaymentForm />
|
|
159
|
+
</Tab>
|
|
160
160
|
</Tabs>
|
|
161
161
|
```
|
|
162
162
|
|
package/ai/docs/Tag.md
CHANGED
|
@@ -19,47 +19,47 @@ import { Tag } from "@g4rcez/components/tag";
|
|
|
19
19
|
|
|
20
20
|
## Props
|
|
21
21
|
|
|
22
|
-
| Prop
|
|
23
|
-
|
|
24
|
-
| `theme`
|
|
25
|
-
| `size`
|
|
26
|
-
| `icon`
|
|
27
|
-
| `indicator` | `"primary" \| "secondary" \| "info" \| "warn" \| "danger" \| "success" \| "muted" \| "neutral"`
|
|
28
|
-
| `loading`
|
|
29
|
-
| `as`
|
|
30
|
-
| `className` | `string`
|
|
31
|
-
| `children`
|
|
22
|
+
| Prop | Type | Default | Description |
|
|
23
|
+
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------ |
|
|
24
|
+
| `theme` | `"primary" \| "secondary" \| "info" \| "warn" \| "danger" \| "success" \| "muted" \| "neutral" \| "custom" \| "disabled" \| "loading"` | `"primary"` | Visual theme/variant of the tag |
|
|
25
|
+
| `size` | `"icon" \| "small" \| "default" \| "big" \| "tiny"` | `"default"` | Size of the tag |
|
|
26
|
+
| `icon` | `React.ReactNode` | - | Icon to display inside the tag |
|
|
27
|
+
| `indicator` | `"primary" \| "secondary" \| "info" \| "warn" \| "danger" \| "success" \| "muted" \| "neutral"` | - | Shows a small colored dot before the label |
|
|
28
|
+
| `loading` | `boolean` | `false` | Overrides theme with pulse animation |
|
|
29
|
+
| `as` | `React.ElementType` | `"span"` | HTML element to render as |
|
|
30
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
31
|
+
| `children` | `React.ReactNode` | - | Tag content |
|
|
32
32
|
|
|
33
33
|
## Design Tokens
|
|
34
34
|
|
|
35
35
|
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
36
36
|
|
|
37
|
-
| Token
|
|
38
|
-
|
|
39
|
-
| `bg-tag-primary-bg`
|
|
40
|
-
| `text-tag-primary-text`
|
|
41
|
-
| `bg-tag-secondary-bg`
|
|
42
|
-
| `text-tag-secondary-text` | `--tag-secondary-text` | Text color for secondary theme
|
|
43
|
-
| `bg-tag-info-bg`
|
|
44
|
-
| `text-tag-info-text`
|
|
45
|
-
| `bg-tag-warn-bg`
|
|
46
|
-
| `text-tag-warn-text`
|
|
47
|
-
| `bg-tag-danger-bg`
|
|
48
|
-
| `text-tag-danger-text`
|
|
49
|
-
| `bg-tag-success-bg`
|
|
50
|
-
| `text-tag-success-text`
|
|
51
|
-
| `bg-tag-muted-bg`
|
|
52
|
-
| `text-tag-muted-text`
|
|
53
|
-
| `bg-disabled`
|
|
54
|
-
| `border-card-border`
|
|
55
|
-
| `rounded-pill`
|
|
56
|
-
| `bg-primary`
|
|
57
|
-
| `bg-secondary`
|
|
58
|
-
| `bg-info`
|
|
59
|
-
| `bg-warn`
|
|
60
|
-
| `bg-danger`
|
|
61
|
-
| `bg-success`
|
|
62
|
-
| `bg-muted`
|
|
37
|
+
| Token | CSS Variable | Purpose |
|
|
38
|
+
| ------------------------- | ---------------------- | -------------------------------------- |
|
|
39
|
+
| `bg-tag-primary-bg` | `--tag-primary-bg` | Background for primary theme |
|
|
40
|
+
| `text-tag-primary-text` | `--tag-primary-text` | Text color for primary theme |
|
|
41
|
+
| `bg-tag-secondary-bg` | `--tag-secondary-bg` | Background for secondary theme |
|
|
42
|
+
| `text-tag-secondary-text` | `--tag-secondary-text` | Text color for secondary theme |
|
|
43
|
+
| `bg-tag-info-bg` | `--tag-info-bg` | Background for info theme |
|
|
44
|
+
| `text-tag-info-text` | `--tag-info-text` | Text color for info theme |
|
|
45
|
+
| `bg-tag-warn-bg` | `--tag-warn-bg` | Background for warn theme |
|
|
46
|
+
| `text-tag-warn-text` | `--tag-warn-text` | Text color for warn theme |
|
|
47
|
+
| `bg-tag-danger-bg` | `--tag-danger-bg` | Background for danger theme |
|
|
48
|
+
| `text-tag-danger-text` | `--tag-danger-text` | Text color for danger theme |
|
|
49
|
+
| `bg-tag-success-bg` | `--tag-success-bg` | Background for success theme |
|
|
50
|
+
| `text-tag-success-text` | `--tag-success-text` | Text color for success theme |
|
|
51
|
+
| `bg-tag-muted-bg` | `--tag-muted-bg` | Background for muted theme |
|
|
52
|
+
| `text-tag-muted-text` | `--tag-muted-text` | Text color for muted theme |
|
|
53
|
+
| `bg-disabled` | `--disabled` | Background for disabled/loading states |
|
|
54
|
+
| `border-card-border` | `--card-border` | Border color for neutral theme |
|
|
55
|
+
| `rounded-pill` | `--radius-pill` | Pill border radius applied to all tags |
|
|
56
|
+
| `bg-primary` | `--primary` | Dot color for primary indicator |
|
|
57
|
+
| `bg-secondary` | `--secondary` | Dot color for secondary indicator |
|
|
58
|
+
| `bg-info` | `--info` | Dot color for info indicator |
|
|
59
|
+
| `bg-warn` | `--warn` | Dot color for warn indicator |
|
|
60
|
+
| `bg-danger` | `--danger` | Dot color for danger indicator |
|
|
61
|
+
| `bg-success` | `--success` | Dot color for success indicator |
|
|
62
|
+
| `bg-muted` | `--muted` | Dot color for muted indicator |
|
|
63
63
|
|
|
64
64
|
## Theme Variants
|
|
65
65
|
|
|
@@ -119,26 +119,28 @@ import { StarIcon, CheckIcon } from "@phosphor-icons/react";
|
|
|
119
119
|
|
|
120
120
|
```tsx
|
|
121
121
|
const statusMap: Record<string, { theme: "success" | "warn" | "muted" | "danger" }> = {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
active: { theme: "success" },
|
|
123
|
+
pending: { theme: "warn" },
|
|
124
|
+
inactive: { theme: "muted" },
|
|
125
|
+
error: { theme: "danger" },
|
|
126
126
|
};
|
|
127
127
|
|
|
128
128
|
const StatusTag = ({ status }: { status: string }) => {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
const config = statusMap[status] ?? statusMap.inactive;
|
|
130
|
+
return (
|
|
131
|
+
<Tag theme={config.theme} indicator={config.theme}>
|
|
132
|
+
{status.charAt(0).toUpperCase() + status.slice(1)}
|
|
133
|
+
</Tag>
|
|
134
|
+
);
|
|
135
135
|
};
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
### Loading State
|
|
139
139
|
|
|
140
140
|
```tsx
|
|
141
|
-
<Tag loading theme="primary">
|
|
141
|
+
<Tag loading theme="primary">
|
|
142
|
+
Processing...
|
|
143
|
+
</Tag>
|
|
142
144
|
```
|
|
143
145
|
|
|
144
146
|
### Polymorphic Usage
|
|
@@ -157,18 +159,18 @@ const StatusTag = ({ status }: { status: string }) => {
|
|
|
157
159
|
|
|
158
160
|
```tsx
|
|
159
161
|
const categories = [
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
{ name: "React", theme: "info" },
|
|
163
|
+
{ name: "TypeScript", theme: "primary" },
|
|
164
|
+
{ name: "CSS", theme: "success" },
|
|
163
165
|
];
|
|
164
166
|
|
|
165
167
|
<div className="flex gap-2 flex-wrap">
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
</div
|
|
168
|
+
{categories.map((cat) => (
|
|
169
|
+
<Tag key={cat.name} theme={cat.theme as any}>
|
|
170
|
+
{cat.name}
|
|
171
|
+
</Tag>
|
|
172
|
+
))}
|
|
173
|
+
</div>;
|
|
172
174
|
```
|
|
173
175
|
|
|
174
176
|
### Notification Badge
|
|
@@ -177,15 +179,11 @@ const categories = [
|
|
|
177
179
|
import { BellIcon } from "@phosphor-icons/react";
|
|
178
180
|
|
|
179
181
|
<div className="relative">
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
>
|
|
186
|
-
3
|
|
187
|
-
</Tag>
|
|
188
|
-
</div>
|
|
182
|
+
<BellIcon size={24} />
|
|
183
|
+
<Tag size="small" theme="danger" className="absolute -top-2 -right-2 min-w-[20px] h-5 text-xs">
|
|
184
|
+
3
|
|
185
|
+
</Tag>
|
|
186
|
+
</div>;
|
|
189
187
|
```
|
|
190
188
|
|
|
191
189
|
## Do
|
package/ai/docs/TaskList.md
CHANGED
|
@@ -22,20 +22,20 @@ import { Checkbox } from "@g4rcez/components/checkbox";
|
|
|
22
22
|
|
|
23
23
|
Accepts all standard HTML `<fieldset>` attributes.
|
|
24
24
|
|
|
25
|
-
| Prop
|
|
26
|
-
|
|
27
|
-
| `children`
|
|
28
|
-
| `className` | `string`
|
|
25
|
+
| Prop | Type | Default | Description |
|
|
26
|
+
| ----------- | ----------------- | ------- | --------------------------------------------- |
|
|
27
|
+
| `children` | `React.ReactNode` | — | `Checkbox` components with the `asTask` prop. |
|
|
28
|
+
| `className` | `string` | — | Additional CSS classes for the `<fieldset>`. |
|
|
29
29
|
|
|
30
30
|
## Design Tokens
|
|
31
31
|
|
|
32
32
|
`TaskList` itself is a plain `<fieldset>` and inherits ambient tokens from its children. No component-scoped tokens are consumed directly. Style the container using semantic tokens:
|
|
33
33
|
|
|
34
|
-
| Token
|
|
35
|
-
|
|
36
|
-
| `border-border`
|
|
37
|
-
| `bg-background`
|
|
38
|
-
| `text-foreground` | `--foreground` | Task label text
|
|
34
|
+
| Token | CSS Variable | Purpose |
|
|
35
|
+
| ----------------- | -------------- | ------------------------------------- |
|
|
36
|
+
| `border-border` | `--border` | Optional border around the task group |
|
|
37
|
+
| `bg-background` | `--background` | Container background |
|
|
38
|
+
| `text-foreground` | `--foreground` | Task label text |
|
|
39
39
|
|
|
40
40
|
## Examples
|
|
41
41
|
|
|
@@ -46,13 +46,13 @@ import { TaskList } from "@g4rcez/components/task-list";
|
|
|
46
46
|
import { Checkbox } from "@g4rcez/components/checkbox";
|
|
47
47
|
|
|
48
48
|
export default function OnboardingChecklist() {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
return (
|
|
50
|
+
<TaskList className="flex flex-col gap-sm border border-border rounded-card p-4">
|
|
51
|
+
<Checkbox asTask>Complete initial setup</Checkbox>
|
|
52
|
+
<Checkbox asTask>Upload profile picture</Checkbox>
|
|
53
|
+
<Checkbox asTask>Verify email address</Checkbox>
|
|
54
|
+
</TaskList>
|
|
55
|
+
);
|
|
56
56
|
}
|
|
57
57
|
```
|
|
58
58
|
|
|
@@ -66,27 +66,19 @@ import { Checkbox } from "@g4rcez/components/checkbox";
|
|
|
66
66
|
type Task = { id: string; text: string; done: boolean };
|
|
67
67
|
|
|
68
68
|
export default function DynamicTaskList({ tasks }: { tasks: Task[] }) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
const [items, setItems] = useState(tasks);
|
|
70
|
+
|
|
71
|
+
const toggle = (id: string) => setItems((prev) => prev.map((t) => (t.id === id ? { ...t, done: !t.done } : t)));
|
|
72
|
+
|
|
73
|
+
return (
|
|
74
|
+
<TaskList className="flex flex-col gap-sm">
|
|
75
|
+
{items.map((task) => (
|
|
76
|
+
<Checkbox key={task.id} asTask checked={task.done} onChange={() => toggle(task.id)}>
|
|
77
|
+
{task.text}
|
|
78
|
+
</Checkbox>
|
|
79
|
+
))}
|
|
80
|
+
</TaskList>
|
|
74
81
|
);
|
|
75
|
-
|
|
76
|
-
return (
|
|
77
|
-
<TaskList className="flex flex-col gap-sm">
|
|
78
|
-
{items.map((task) => (
|
|
79
|
-
<Checkbox
|
|
80
|
-
key={task.id}
|
|
81
|
-
asTask
|
|
82
|
-
checked={task.done}
|
|
83
|
-
onChange={() => toggle(task.id)}
|
|
84
|
-
>
|
|
85
|
-
{task.text}
|
|
86
|
-
</Checkbox>
|
|
87
|
-
))}
|
|
88
|
-
</TaskList>
|
|
89
|
-
);
|
|
90
82
|
}
|
|
91
83
|
```
|
|
92
84
|
|
|
@@ -97,16 +89,14 @@ import { TaskList } from "@g4rcez/components/task-list";
|
|
|
97
89
|
import { Checkbox } from "@g4rcez/components/checkbox";
|
|
98
90
|
|
|
99
91
|
export default function ProjectSubtasks() {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
</TaskList>
|
|
109
|
-
);
|
|
92
|
+
return (
|
|
93
|
+
<TaskList className="flex flex-col gap-sm rounded-card border border-border p-4">
|
|
94
|
+
<legend className="px-1 text-sm font-medium text-foreground">Phase 1 — Design</legend>
|
|
95
|
+
<Checkbox asTask>Create wireframes</Checkbox>
|
|
96
|
+
<Checkbox asTask>Review with stakeholders</Checkbox>
|
|
97
|
+
<Checkbox asTask>Export design tokens</Checkbox>
|
|
98
|
+
</TaskList>
|
|
99
|
+
);
|
|
110
100
|
}
|
|
111
101
|
```
|
|
112
102
|
|
|
@@ -132,10 +122,10 @@ export default function ProjectSubtasks() {
|
|
|
132
122
|
|
|
133
123
|
## Data Attributes
|
|
134
124
|
|
|
135
|
-
| Attribute
|
|
136
|
-
|
|
137
|
-
| `data-component` | `fieldset`
|
|
138
|
-
| `data-task`
|
|
125
|
+
| Attribute | Element | Value | Description |
|
|
126
|
+
| ---------------- | ------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------ |
|
|
127
|
+
| `data-component` | `fieldset` | `"task-list"` | Identifies the component. |
|
|
128
|
+
| `data-task` | child `input` | `"true"` | Must be present on child checkbox inputs for them to be counted in the completion check. Set automatically via `asTask`. |
|
|
139
129
|
|
|
140
130
|
## Notes
|
|
141
131
|
|