@g4rcez/components 4.0.1 → 4.1.1
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 +233 -0
- package/ai/docs/Alert.md +166 -0
- package/ai/docs/AnimatedList.md +206 -0
- package/ai/docs/Autocomplete.md +221 -0
- package/ai/docs/Button.md +182 -0
- package/ai/docs/Calendar.md +185 -0
- package/ai/docs/Card.md +178 -0
- package/ai/docs/Checkbox.md +194 -0
- package/ai/docs/CommandPalette.md +275 -0
- package/ai/docs/DatePicker.md +152 -0
- package/ai/docs/Dropdown.md +195 -0
- package/{dist/ai → ai}/docs/Empty.md +41 -44
- package/{dist/ai → ai}/docs/Expand.md +40 -54
- package/ai/docs/FileUpload.md +218 -0
- package/{dist/ai → ai}/docs/Form.md +35 -29
- package/{dist/ai → ai}/docs/FormReset.md +37 -37
- package/{dist/ai → ai}/docs/Heading.md +4 -6
- package/ai/docs/Input.md +212 -0
- package/ai/docs/InputField.md +170 -0
- package/ai/docs/List.md +208 -0
- package/ai/docs/Menu.md +168 -0
- package/ai/docs/Modal.md +273 -0
- package/ai/docs/MultiSelect.md +177 -0
- package/ai/docs/Notifications.md +231 -0
- package/ai/docs/PageCalendar.md +262 -0
- package/{dist/ai → ai}/docs/Polymorph.md +25 -41
- package/{dist/ai → ai}/docs/Progress.md +55 -51
- package/{dist/ai → ai}/docs/Radiobox.md +49 -41
- package/{dist/ai → ai}/docs/RenderOnView.md +26 -32
- package/{dist/ai → ai}/docs/Resizable.md +60 -65
- package/ai/docs/Select.md +284 -0
- package/{dist/ai → ai}/docs/Shortcut.md +14 -14
- package/{dist/ai → ai}/docs/Skeleton.md +56 -60
- package/{dist/ai → ai}/docs/Slider.md +26 -49
- package/{dist/ai → ai}/docs/Slot.md +15 -17
- package/{dist/ai → ai}/docs/Spinner.md +17 -15
- package/{dist/ai → ai}/docs/Stats.md +44 -42
- package/ai/docs/Step.md +159 -0
- package/{dist/ai → ai}/docs/Switch.md +44 -54
- package/ai/docs/Table.md +286 -0
- package/ai/docs/Tabs.md +191 -0
- package/ai/docs/Tag.md +222 -0
- package/{dist/ai → ai}/docs/TaskList.md +40 -50
- package/ai/docs/Textarea.md +144 -0
- package/ai/docs/Timeline.md +212 -0
- package/{dist/ai → ai}/docs/Toolbar.md +46 -46
- package/ai/docs/Tooltip.md +231 -0
- package/ai/docs/Typography.md +187 -0
- package/ai/docs/Wizard.md +208 -0
- package/ai/docs/index.md +183 -0
- 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.js +10 -10
- package/dist/components/core/button.js.map +1 -1
- package/dist/components/core/tag.js +4 -4
- package/dist/components/core/tag.js.map +1 -1
- package/dist/components/display/alert.js +48 -46
- package/dist/components/display/alert.js.map +1 -1
- package/dist/components/display/calendar.js +6 -6
- package/dist/components/display/card.js +2 -2
- package/dist/components/display/card.js.map +1 -1
- package/dist/components/display/list.js +1 -1
- package/dist/components/display/list.js.map +1 -1
- package/dist/components/display/notifications.js +3 -3
- package/dist/components/display/stats.js +1 -1
- package/dist/components/display/tabs.js +2 -2
- package/dist/components/display/timeline.js +1 -1
- package/dist/components/floating/dropdown.js +25 -17
- package/dist/components/floating/dropdown.js.map +1 -1
- package/dist/components/floating/expand.js +7 -7
- package/dist/components/floating/expand.js.map +1 -1
- package/dist/components/floating/menu.js +10 -10
- package/dist/components/floating/menu.js.map +1 -1
- package/dist/components/floating/modal.js +106 -102
- package/dist/components/floating/modal.js.map +1 -1
- package/dist/components/floating/tooltip.js +14 -14
- package/dist/components/floating/tooltip.js.map +1 -1
- package/dist/components/form/autocomplete.js +6 -6
- package/dist/components/form/checkbox.js +1 -1
- package/dist/components/form/date-picker.js +5 -5
- package/dist/components/form/file-upload.js +2 -2
- package/dist/components/form/form.js.map +1 -1
- package/dist/components/form/input.js +1 -1
- package/dist/components/form/radiobox.js +1 -1
- package/dist/components/form/select.js +3 -3
- package/dist/components/form/switch.js +2 -2
- package/dist/components/form/switch.js.map +1 -1
- package/dist/components/table/table.js +3 -3
- 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/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 +2826 -2765
- 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/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/{context-BFXNJVn2.js → use-translations-DSltA7H_.js} +38 -30
- package/dist/use-translations-DSltA7H_.js.map +1 -0
- package/package.json +101 -88
- package/dist/ai/SKILL.md +0 -266
- package/dist/ai/docs/Alert.md +0 -167
- package/dist/ai/docs/AnimatedList.md +0 -205
- package/dist/ai/docs/Autocomplete.md +0 -225
- package/dist/ai/docs/Button.md +0 -182
- package/dist/ai/docs/Calendar.md +0 -219
- package/dist/ai/docs/Card.md +0 -174
- package/dist/ai/docs/Checkbox.md +0 -199
- package/dist/ai/docs/CommandPalette.md +0 -293
- package/dist/ai/docs/DatePicker.md +0 -171
- package/dist/ai/docs/Dropdown.md +0 -223
- package/dist/ai/docs/FileUpload.md +0 -225
- package/dist/ai/docs/Input.md +0 -237
- package/dist/ai/docs/InputField.md +0 -170
- package/dist/ai/docs/List.md +0 -205
- package/dist/ai/docs/Menu.md +0 -166
- package/dist/ai/docs/Modal.md +0 -280
- package/dist/ai/docs/MultiSelect.md +0 -196
- package/dist/ai/docs/Notifications.md +0 -231
- package/dist/ai/docs/PageCalendar.md +0 -271
- package/dist/ai/docs/Select.md +0 -284
- package/dist/ai/docs/Step.md +0 -159
- package/dist/ai/docs/Table.md +0 -298
- package/dist/ai/docs/Tabs.md +0 -191
- package/dist/ai/docs/Tag.md +0 -224
- package/dist/ai/docs/Textarea.md +0 -167
- package/dist/ai/docs/Timeline.md +0 -210
- package/dist/ai/docs/Tooltip.md +0 -231
- package/dist/ai/docs/TransferList.md +0 -142
- package/dist/ai/docs/Typography.md +0 -187
- package/dist/ai/docs/Wizard.md +0 -213
- package/dist/ai/docs/index.md +0 -183
- 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/core/button.d.ts +0 -77
- package/dist/components/core/button.d.ts.map +0 -1
- package/dist/components/core/heading.d.ts +0 -3
- package/dist/components/core/heading.d.ts.map +0 -1
- package/dist/components/core/polymorph.d.ts +0 -10
- package/dist/components/core/polymorph.d.ts.map +0 -1
- package/dist/components/core/render-on-view.d.ts +0 -7
- package/dist/components/core/render-on-view.d.ts.map +0 -1
- package/dist/components/core/resizable.d.ts +0 -3
- package/dist/components/core/resizable.d.ts.map +0 -1
- package/dist/components/core/slot.d.ts +0 -16
- package/dist/components/core/slot.d.ts.map +0 -1
- package/dist/components/core/tag.d.ts +0 -35
- package/dist/components/core/tag.d.ts.map +0 -1
- package/dist/components/core/typography.d.ts +0 -24
- package/dist/components/core/typography.d.ts.map +0 -1
- package/dist/components/display/alert.d.ts +0 -28
- package/dist/components/display/alert.d.ts.map +0 -1
- package/dist/components/display/calendar.d.ts +0 -42
- package/dist/components/display/calendar.d.ts.map +0 -1
- package/dist/components/display/card.d.ts +0 -29
- package/dist/components/display/card.d.ts.map +0 -1
- package/dist/components/display/empty.d.ts +0 -8
- package/dist/components/display/empty.d.ts.map +0 -1
- package/dist/components/display/list.d.ts +0 -16
- package/dist/components/display/list.d.ts.map +0 -1
- package/dist/components/display/notifications.d.ts +0 -27
- package/dist/components/display/notifications.d.ts.map +0 -1
- package/dist/components/display/progress.d.ts +0 -13
- package/dist/components/display/progress.d.ts.map +0 -1
- package/dist/components/display/shortcut.d.ts +0 -4
- package/dist/components/display/shortcut.d.ts.map +0 -1
- package/dist/components/display/skeleton.d.ts +0 -12
- package/dist/components/display/skeleton.d.ts.map +0 -1
- package/dist/components/display/spinner.d.ts +0 -5
- package/dist/components/display/spinner.d.ts.map +0 -1
- package/dist/components/display/stats.d.ts +0 -12
- package/dist/components/display/stats.d.ts.map +0 -1
- package/dist/components/display/step.d.ts +0 -24
- package/dist/components/display/step.d.ts.map +0 -1
- package/dist/components/display/tabs.d.ts +0 -24
- package/dist/components/display/tabs.d.ts.map +0 -1
- package/dist/components/display/timeline.d.ts +0 -10
- package/dist/components/display/timeline.d.ts.map +0 -1
- package/dist/components/floating/command-palette.d.ts +0 -49
- package/dist/components/floating/command-palette.d.ts.map +0 -1
- package/dist/components/floating/dropdown.d.ts +0 -15
- package/dist/components/floating/dropdown.d.ts.map +0 -1
- package/dist/components/floating/expand.d.ts +0 -11
- package/dist/components/floating/expand.d.ts.map +0 -1
- package/dist/components/floating/menu.d.ts +0 -52
- package/dist/components/floating/menu.d.ts.map +0 -1
- package/dist/components/floating/modal.d.ts +0 -60
- package/dist/components/floating/modal.d.ts.map +0 -1
- package/dist/components/floating/toolbar.d.ts +0 -6
- package/dist/components/floating/toolbar.d.ts.map +0 -1
- package/dist/components/floating/tooltip.d.ts +0 -17
- package/dist/components/floating/tooltip.d.ts.map +0 -1
- package/dist/components/floating/wizard.d.ts +0 -26
- package/dist/components/floating/wizard.d.ts.map +0 -1
- package/dist/components/form/autocomplete.d.ts +0 -16
- package/dist/components/form/autocomplete.d.ts.map +0 -1
- package/dist/components/form/checkbox.d.ts +0 -12
- package/dist/components/form/checkbox.d.ts.map +0 -1
- package/dist/components/form/date-picker.d.ts +0 -10
- package/dist/components/form/date-picker.d.ts.map +0 -1
- package/dist/components/form/file-upload.d.ts +0 -15
- package/dist/components/form/file-upload.d.ts.map +0 -1
- package/dist/components/form/form.d.ts +0 -3
- package/dist/components/form/form.d.ts.map +0 -1
- package/dist/components/form/formReset.d.ts +0 -2
- package/dist/components/form/formReset.d.ts.map +0 -1
- package/dist/components/form/free-text.d.ts +0 -11
- package/dist/components/form/free-text.d.ts.map +0 -1
- package/dist/components/form/input-field.d.ts +0 -34
- package/dist/components/form/input-field.d.ts.map +0 -1
- package/dist/components/form/input.d.ts +0 -52
- package/dist/components/form/input.d.ts.map +0 -1
- package/dist/components/form/multi-select.d.ts +0 -19
- package/dist/components/form/multi-select.d.ts.map +0 -1
- package/dist/components/form/radiobox.d.ts +0 -7
- package/dist/components/form/radiobox.d.ts.map +0 -1
- package/dist/components/form/select.d.ts +0 -13
- package/dist/components/form/select.d.ts.map +0 -1
- package/dist/components/form/slider.d.ts +0 -7
- package/dist/components/form/slider.d.ts.map +0 -1
- package/dist/components/form/switch.d.ts +0 -9
- package/dist/components/form/switch.d.ts.map +0 -1
- package/dist/components/form/task-list.d.ts +0 -3
- package/dist/components/form/task-list.d.ts.map +0 -1
- package/dist/components/form/textarea.d.ts +0 -6
- package/dist/components/form/textarea.d.ts.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/components/index.d.ts +0 -46
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/page-calendar/calendar-header.d.ts +0 -16
- package/dist/components/page-calendar/calendar-header.d.ts.map +0 -1
- package/dist/components/page-calendar/day-view.d.ts +0 -12
- package/dist/components/page-calendar/day-view.d.ts.map +0 -1
- package/dist/components/page-calendar/event-pill.d.ts +0 -9
- package/dist/components/page-calendar/event-pill.d.ts.map +0 -1
- package/dist/components/page-calendar/index.d.ts +0 -4
- package/dist/components/page-calendar/index.d.ts.map +0 -1
- package/dist/components/page-calendar/month-view.d.ts +0 -11
- package/dist/components/page-calendar/month-view.d.ts.map +0 -1
- package/dist/components/page-calendar/page-calendar.d.ts +0 -18
- package/dist/components/page-calendar/page-calendar.d.ts.map +0 -1
- package/dist/components/page-calendar/page-calendar.types.d.ts +0 -18
- package/dist/components/page-calendar/page-calendar.types.d.ts.map +0 -1
- package/dist/components/page-calendar/page-calendar.utils.d.ts +0 -24
- package/dist/components/page-calendar/page-calendar.utils.d.ts.map +0 -1
- package/dist/components/page-calendar/week-view.d.ts +0 -11
- package/dist/components/page-calendar/week-view.d.ts.map +0 -1
- package/dist/components/table/filter.d.ts +0 -42
- package/dist/components/table/filter.d.ts.map +0 -1
- package/dist/components/table/group.d.ts +0 -17
- package/dist/components/table/group.d.ts.map +0 -1
- package/dist/components/table/index.d.ts +0 -20
- package/dist/components/table/index.d.ts.map +0 -1
- package/dist/components/table/inner-table.d.ts +0 -29
- package/dist/components/table/inner-table.d.ts.map +0 -1
- package/dist/components/table/metadata.d.ts +0 -4
- package/dist/components/table/metadata.d.ts.map +0 -1
- package/dist/components/table/pagination.d.ts +0 -3
- package/dist/components/table/pagination.d.ts.map +0 -1
- package/dist/components/table/row.d.ts +0 -12
- package/dist/components/table/row.d.ts.map +0 -1
- package/dist/components/table/sort.d.ts +0 -28
- package/dist/components/table/sort.d.ts.map +0 -1
- package/dist/components/table/table-lib.d.ts +0 -135
- package/dist/components/table/table-lib.d.ts.map +0 -1
- package/dist/components/table/table.context.d.ts +0 -10
- package/dist/components/table/table.context.d.ts.map +0 -1
- package/dist/components/table/thead.d.ts +0 -9
- package/dist/components/table/thead.d.ts.map +0 -1
- package/dist/config/context.d.ts +0 -21
- package/dist/config/context.d.ts.map +0 -1
- package/dist/config/default-translations.d.ts +0 -90
- package/dist/config/default-translations.d.ts.map +0 -1
- package/dist/config/default-tweaks.d.ts +0 -13
- package/dist/config/default-tweaks.d.ts.map +0 -1
- package/dist/constants.d.ts +0 -3
- package/dist/constants.d.ts.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/hooks/use-click-outside.d.ts +0 -3
- package/dist/hooks/use-click-outside.d.ts.map +0 -1
- package/dist/hooks/use-color-parser.d.ts +0 -2
- package/dist/hooks/use-color-parser.d.ts.map +0 -1
- package/dist/hooks/use-components-provider.d.ts +0 -15
- package/dist/hooks/use-components-provider.d.ts.map +0 -1
- package/dist/hooks/use-debounce.d.ts +0 -5
- package/dist/hooks/use-debounce.d.ts.map +0 -1
- package/dist/hooks/use-floating-ref.d.ts +0 -2
- package/dist/hooks/use-floating-ref.d.ts.map +0 -1
- package/dist/hooks/use-form.d.ts +0 -394
- package/dist/hooks/use-form.d.ts.map +0 -1
- package/dist/hooks/use-hover.d.ts +0 -3
- package/dist/hooks/use-hover.d.ts.map +0 -1
- package/dist/hooks/use-input-id.d.ts +0 -4
- package/dist/hooks/use-input-id.d.ts.map +0 -1
- package/dist/hooks/use-is-coarse-device.d.ts +0 -2
- package/dist/hooks/use-is-coarse-device.d.ts.map +0 -1
- package/dist/hooks/use-locale.d.ts +0 -3
- package/dist/hooks/use-locale.d.ts.map +0 -1
- package/dist/hooks/use-media-query.d.ts +0 -2
- package/dist/hooks/use-media-query.d.ts.map +0 -1
- package/dist/hooks/use-on-event.d.ts +0 -4
- package/dist/hooks/use-on-event.d.ts.map +0 -1
- package/dist/hooks/use-parent.d.ts +0 -3
- package/dist/hooks/use-parent.d.ts.map +0 -1
- package/dist/hooks/use-preferences.d.ts +0 -2
- package/dist/hooks/use-preferences.d.ts.map +0 -1
- package/dist/hooks/use-previous.d.ts +0 -2
- package/dist/hooks/use-previous.d.ts.map +0 -1
- package/dist/hooks/use-reactive.d.ts +0 -2
- package/dist/hooks/use-reactive.d.ts.map +0 -1
- package/dist/hooks/use-remove-scroll.d.ts +0 -4
- package/dist/hooks/use-remove-scroll.d.ts.map +0 -1
- package/dist/hooks/use-resize-observer.d.ts +0 -2
- package/dist/hooks/use-resize-observer.d.ts.map +0 -1
- package/dist/hooks/use-stable-ref.d.ts +0 -2
- package/dist/hooks/use-stable-ref.d.ts.map +0 -1
- package/dist/hooks/use-swipe.d.ts +0 -8
- package/dist/hooks/use-swipe.d.ts.map +0 -1
- package/dist/hooks/use-translations.d.ts +0 -88
- package/dist/hooks/use-translations.d.ts.map +0 -1
- package/dist/hooks/use-tweaks.d.ts +0 -3
- package/dist/hooks/use-tweaks.d.ts.map +0 -1
- package/dist/hooks/use-window-size.d.ts +0 -5
- package/dist/hooks/use-window-size.d.ts.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/index.d.ts +0 -22
- package/dist/index.d.ts.map +0 -1
- package/dist/input-CrGrSnUt.js.map +0 -1
- package/dist/input-field-5vYcz5tT.js.map +0 -1
- package/dist/lib/combi-keys.d.ts +0 -15
- package/dist/lib/combi-keys.d.ts.map +0 -1
- package/dist/lib/dict.d.ts +0 -12
- package/dist/lib/dict.d.ts.map +0 -1
- package/dist/lib/dom.d.ts +0 -19
- package/dist/lib/dom.d.ts.map +0 -1
- package/dist/lib/fns.d.ts +0 -11
- package/dist/lib/fns.d.ts.map +0 -1
- package/dist/lib/fzf.d.ts +0 -16
- package/dist/lib/fzf.d.ts.map +0 -1
- package/dist/lib/keyboard-area.d.ts +0 -16
- package/dist/lib/keyboard-area.d.ts.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/types.d.ts +0 -26
- package/dist/types.d.ts.map +0 -1
- package/dist/use-translations-BwLKTrZv.js +0 -10
- package/dist/use-translations-BwLKTrZv.js.map +0 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: DatePicker
|
|
3
|
+
description: Date input with locale-aware masked entry and a floating calendar dropdown for visual selection.
|
|
4
|
+
package: "@g4rcez/components"
|
|
5
|
+
export: "{ DatePicker }"
|
|
6
|
+
import: "import { DatePicker } from '@g4rcez/components/date-picker'"
|
|
7
|
+
category: form
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# DatePicker
|
|
11
|
+
|
|
12
|
+
Date input with locale-aware masked entry and a floating calendar dropdown for visual selection.
|
|
13
|
+
|
|
14
|
+
## Import
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { DatePicker } from "@g4rcez/components/date-picker";
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Props
|
|
21
|
+
|
|
22
|
+
`DatePicker` inherits all `Input` and `Calendar` props. Notable additions:
|
|
23
|
+
|
|
24
|
+
| Prop | Type | Default | Description |
|
|
25
|
+
| -------------- | ----------------------------------- | ------------- | ----------------------------------------------------------------------------- |
|
|
26
|
+
| `date` | `Date` | - | Controlled selected date |
|
|
27
|
+
| `type` | `"date" \| "datetime"` | `"date"` | Whether to include time (hour + minute) selection |
|
|
28
|
+
| `floating` | `boolean` | `true` | Show the calendar in a floating `Dropdown`; set to `false` to embed it inline |
|
|
29
|
+
| `clickToClose` | `boolean` | `false` | Close the calendar immediately after a date is picked |
|
|
30
|
+
| `locale` | `Locales` | system locale | Locale for mask generation and calendar display |
|
|
31
|
+
| `markToday` | `boolean` | `true` | Highlight today in the calendar |
|
|
32
|
+
| `disabledDate` | `(date: Date) => boolean` | - | Callback that returns `true` for dates that should be unselectable |
|
|
33
|
+
| `onChange` | `(date: Date \| undefined) => void` | - | Called with the new `Date` when input is valid, or `undefined` when cleared |
|
|
34
|
+
| `title` | `string` | - | Field label |
|
|
35
|
+
| `error` | `string` | - | Error message shown below the field |
|
|
36
|
+
| `required` | `boolean` | `true` | Marks field as required (default is `true` for DatePicker) |
|
|
37
|
+
| `name` | `string` | - | Form field name — also the `id` of the hidden `<input type="date">` |
|
|
38
|
+
|
|
39
|
+
## Design Tokens
|
|
40
|
+
|
|
41
|
+
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
42
|
+
|
|
43
|
+
| Token | CSS Variable | Purpose |
|
|
44
|
+
| ------------------------ | ----------------------- | ------------------------------------ |
|
|
45
|
+
| `h-input-height` | `--input-height` | Input height |
|
|
46
|
+
| `px-input-x` | `--input-x` | Horizontal input padding |
|
|
47
|
+
| `py-input-y` | `--input-y` | Vertical input padding |
|
|
48
|
+
| `border-input-border` | `--input-border` | Default border color |
|
|
49
|
+
| `text-foreground` | `--foreground` | Input text color |
|
|
50
|
+
| `text-primary` | `--primary` | Focus ring and border on focus/hover |
|
|
51
|
+
| `text-danger` | `--danger` | Error state text and border |
|
|
52
|
+
| `placeholder-input-mask` | `--input-mask` | Placeholder text color |
|
|
53
|
+
| `bg-floating-background` | `--floating-background` | Calendar dropdown background |
|
|
54
|
+
| `border-floating-border` | `--floating-border` | Calendar dropdown border |
|
|
55
|
+
|
|
56
|
+
## Examples
|
|
57
|
+
|
|
58
|
+
### Basic date picker
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
import { DatePicker } from "@g4rcez/components/date-picker";
|
|
62
|
+
|
|
63
|
+
<DatePicker name="birthdate" title="Date of birth" />;
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Date and time
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
<DatePicker name="appointment" title="Appointment time" type="datetime" clickToClose />
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Disabling past dates
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
import { isBefore, startOfDay } from "date-fns";
|
|
76
|
+
|
|
77
|
+
<DatePicker name="event_date" title="Event date" disabledDate={(date) => isBefore(date, startOfDay(new Date()))} />;
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Controlled value
|
|
81
|
+
|
|
82
|
+
```tsx
|
|
83
|
+
const [date, setDate] = useState<Date | undefined>();
|
|
84
|
+
|
|
85
|
+
<DatePicker name="due_date" title="Due date" date={date} onChange={setDate} />;
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Inline calendar (no dropdown)
|
|
89
|
+
|
|
90
|
+
```tsx
|
|
91
|
+
<DatePicker name="check_in" title="Check-in" floating={false} />
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Inside a form
|
|
95
|
+
|
|
96
|
+
```tsx
|
|
97
|
+
import { Form } from "@g4rcez/components/form";
|
|
98
|
+
import { Button } from "@g4rcez/components/button";
|
|
99
|
+
|
|
100
|
+
function BookingForm() {
|
|
101
|
+
const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
|
|
102
|
+
const data = new FormData(e.currentTarget);
|
|
103
|
+
console.log(data.get("check_in"), data.get("check_out"));
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
return (
|
|
107
|
+
<Form onSubmit={handleSubmit} className="flex flex-col gap-base">
|
|
108
|
+
<DatePicker name="check_in" title="Check-in" />
|
|
109
|
+
<DatePicker name="check_out" title="Check-out" />
|
|
110
|
+
<Button theme="primary" type="submit">
|
|
111
|
+
Book
|
|
112
|
+
</Button>
|
|
113
|
+
</Form>
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Do
|
|
119
|
+
|
|
120
|
+
- Use `disabledDate` to prevent invalid date selection (e.g., past dates for future bookings).
|
|
121
|
+
- Use `type="datetime"` when both date and time are required for the use case.
|
|
122
|
+
- Provide a clear `title` label.
|
|
123
|
+
- Rely on `locale` for locale-aware mask and calendar generation rather than hardcoding a format.
|
|
124
|
+
|
|
125
|
+
## Don't
|
|
126
|
+
|
|
127
|
+
- Don't pass raw Tailwind color classes (`bg-blue-500`, `text-white`, `border-gray-300`) — use theme props or design tokens instead.
|
|
128
|
+
- Don't use arbitrary Tailwind values (`bg-[#abc]`, `bg-[--my-var]`) — override CSS variables in your `@theme` block instead.
|
|
129
|
+
- Don't use `DatePicker` when only a year or only a month is needed — a `Select` is more appropriate.
|
|
130
|
+
- Don't assume users will always use the calendar; the masked text input must also be keyboard-friendly.
|
|
131
|
+
|
|
132
|
+
## Accessibility
|
|
133
|
+
|
|
134
|
+
- The calendar icon button includes an `aria-describedby` referencing a visually-hidden `<span>` with a translatable label.
|
|
135
|
+
- The underlying `Input` component handles `aria-disabled`, `aria-readonly`, and `aria-busy`.
|
|
136
|
+
- The calendar (`Calendar` component) is fully keyboard-navigable.
|
|
137
|
+
- The input is masked to prevent invalid character entry, reducing validation friction.
|
|
138
|
+
- Follows the standard `fieldset > label` structure from `InputField`.
|
|
139
|
+
|
|
140
|
+
## Data Attributes
|
|
141
|
+
|
|
142
|
+
- `data-component="date-picker"` — on the visible `Input`.
|
|
143
|
+
- `data-value` — ISO string representation of the selected date (set on the visible input).
|
|
144
|
+
- `data-target` — mirrors the `name` prop; used to link the shadow input to the hidden field.
|
|
145
|
+
- `data-origin` — on the hidden `<input type="date">`: its `name` value, used by `formReset`.
|
|
146
|
+
|
|
147
|
+
## Notes
|
|
148
|
+
|
|
149
|
+
- The component renders two inputs: a visible masked `Input` for user interaction and a hidden `<input type="date">` (with `name`) for native form submission.
|
|
150
|
+
- The input mask is generated dynamically from `Intl.DateTimeFormat.formatToParts`, so it automatically reflects the locale's date order (e.g., MM/DD/YYYY vs DD/MM/YYYY).
|
|
151
|
+
- Date parsing uses `date-fns`. The `placeholder` is derived from the same locale format string.
|
|
152
|
+
- When `floating={true}` (default), the calendar is rendered in a `Dropdown` using `@floating-ui/react` positioned to the right of the input.
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Dropdown
|
|
3
|
+
description: Floating dropdown panel with an optional title, arrow pointer, and automatic collision-aware positioning.
|
|
4
|
+
package: "@g4rcez/components"
|
|
5
|
+
export: "{ Dropdown }"
|
|
6
|
+
import: "import { Dropdown } from '@g4rcez/components/dropdown'"
|
|
7
|
+
category: floating
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Dropdown
|
|
11
|
+
|
|
12
|
+
Floating dropdown panel with an optional title, arrow pointer, and automatic collision-aware positioning.
|
|
13
|
+
|
|
14
|
+
## Import
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { Dropdown } from "@g4rcez/components/dropdown";
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Props
|
|
21
|
+
|
|
22
|
+
| Prop | Type | Default | Description |
|
|
23
|
+
| -------------- | --------------------------------------- | ------- | ---------------------------------------------------- |
|
|
24
|
+
| `trigger` | `React.ReactElement \| React.ReactNode` | — | Element that toggles the dropdown on click |
|
|
25
|
+
| `open` | `boolean` | — | Controlled open state |
|
|
26
|
+
| `arrow` | `boolean` | `false` | Show an arrow pointer pointing at the trigger |
|
|
27
|
+
| `title` | `React.ReactNode \| string` | — | Header title rendered inside the panel |
|
|
28
|
+
| `restoreFocus` | `boolean` | `true` | Restore focus to the trigger when the panel closes |
|
|
29
|
+
| `returnFocus` | `boolean` | `true` | Return focus to the trigger element |
|
|
30
|
+
| `onChange` | `(nextValue: boolean) => void` | — | Callback fired when the open state changes |
|
|
31
|
+
| `buttonProps` | `React.HTMLProps<"button">` | — | Additional props forwarded to the trigger `<button>` |
|
|
32
|
+
| `children` | `React.ReactNode` | — | Panel content |
|
|
33
|
+
|
|
34
|
+
## Design Tokens
|
|
35
|
+
|
|
36
|
+
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
37
|
+
|
|
38
|
+
| Token | CSS Variable | Purpose |
|
|
39
|
+
| -------------------------- | ----------------------- | ------------------------------ |
|
|
40
|
+
| `bg-floating-background` | `--floating-background` | Panel surface background |
|
|
41
|
+
| `border-floating-border` | `--floating-border` | Panel border and arrow stroke |
|
|
42
|
+
| `fill-floating-background` | `--floating-background` | Arrow fill color |
|
|
43
|
+
| `z-floating` | `--z-floating` | Z-index for the floating panel |
|
|
44
|
+
| `shadow-shadow-floating` | `--shadow-floating` | Panel drop shadow |
|
|
45
|
+
| `rounded-lg` | — | Panel corner radius |
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
### Simple Action Menu
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
import { Dropdown } from "@g4rcez/components/dropdown";
|
|
53
|
+
import { Button } from "@g4rcez/components/button";
|
|
54
|
+
|
|
55
|
+
function SimpleDropdown() {
|
|
56
|
+
return (
|
|
57
|
+
<Dropdown trigger={<Button theme="primary">Actions</Button>}>
|
|
58
|
+
<div className="flex min-w-48 flex-col py-1">
|
|
59
|
+
<button className="w-full px-4 py-2 text-left text-foreground hover:bg-floating-hover">Edit</button>
|
|
60
|
+
<button className="w-full px-4 py-2 text-left text-foreground hover:bg-floating-hover">Duplicate</button>
|
|
61
|
+
<hr className="border-border my-1" />
|
|
62
|
+
<button className="w-full px-4 py-2 text-left text-danger hover:bg-floating-hover">Delete</button>
|
|
63
|
+
</div>
|
|
64
|
+
</Dropdown>
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Dropdown with Title and Arrow
|
|
70
|
+
|
|
71
|
+
```tsx
|
|
72
|
+
import { UserIcon, CaretDownIcon } from "@phosphor-icons/react";
|
|
73
|
+
import { Dropdown } from "@g4rcez/components/dropdown";
|
|
74
|
+
|
|
75
|
+
function AccountDropdown() {
|
|
76
|
+
return (
|
|
77
|
+
<Dropdown
|
|
78
|
+
trigger={
|
|
79
|
+
<button className="flex items-center gap-2 px-3 py-2 rounded-button border border-border text-foreground">
|
|
80
|
+
<UserIcon size={16} />
|
|
81
|
+
Account
|
|
82
|
+
<CaretDownIcon size={16} />
|
|
83
|
+
</button>
|
|
84
|
+
}
|
|
85
|
+
title="Account Options"
|
|
86
|
+
arrow
|
|
87
|
+
>
|
|
88
|
+
<div className="flex min-w-48 flex-col py-1">
|
|
89
|
+
<button className="w-full px-4 py-2 text-left text-foreground hover:bg-floating-hover">Profile Settings</button>
|
|
90
|
+
<button className="w-full px-4 py-2 text-left text-foreground hover:bg-floating-hover">Billing</button>
|
|
91
|
+
<button className="w-full px-4 py-2 text-left text-foreground hover:bg-floating-hover">Sign Out</button>
|
|
92
|
+
</div>
|
|
93
|
+
</Dropdown>
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Controlled Dropdown
|
|
99
|
+
|
|
100
|
+
```tsx
|
|
101
|
+
import { useState } from "react";
|
|
102
|
+
import { Dropdown } from "@g4rcez/components/dropdown";
|
|
103
|
+
|
|
104
|
+
function ControlledDropdown() {
|
|
105
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
106
|
+
|
|
107
|
+
return (
|
|
108
|
+
<Dropdown
|
|
109
|
+
trigger={<button className="px-4 py-2 rounded-button bg-muted text-foreground">{isOpen ? "Close" : "Open"} Menu</button>}
|
|
110
|
+
open={isOpen}
|
|
111
|
+
onChange={setIsOpen}
|
|
112
|
+
>
|
|
113
|
+
<div className="min-w-48 p-4">
|
|
114
|
+
<p className="text-foreground">Controlled dropdown content</p>
|
|
115
|
+
<button onClick={() => setIsOpen(false)} className="mt-2 px-3 py-1 bg-primary text-primary-foreground rounded-button text-sm">
|
|
116
|
+
Close
|
|
117
|
+
</button>
|
|
118
|
+
</div>
|
|
119
|
+
</Dropdown>
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Filter Dropdown with Form Content
|
|
125
|
+
|
|
126
|
+
```tsx
|
|
127
|
+
import { FunnelIcon } from "@phosphor-icons/react";
|
|
128
|
+
import { Dropdown } from "@g4rcez/components/dropdown";
|
|
129
|
+
|
|
130
|
+
function FilterDropdown() {
|
|
131
|
+
const [status, setStatus] = useState("");
|
|
132
|
+
|
|
133
|
+
return (
|
|
134
|
+
<Dropdown
|
|
135
|
+
trigger={
|
|
136
|
+
<button className="flex items-center gap-2 px-3 py-2 rounded-button border border-border text-foreground">
|
|
137
|
+
<FunnelIcon size={16} />
|
|
138
|
+
Filters
|
|
139
|
+
{status && <span className="h-2 w-2 rounded-full bg-primary" />}
|
|
140
|
+
</button>
|
|
141
|
+
}
|
|
142
|
+
title="Filter Options"
|
|
143
|
+
>
|
|
144
|
+
<div className="min-w-64 space-y-4 p-4">
|
|
145
|
+
<div>
|
|
146
|
+
<label className="block text-sm font-medium text-foreground mb-1">Status</label>
|
|
147
|
+
<select
|
|
148
|
+
value={status}
|
|
149
|
+
onChange={(e) => setStatus(e.target.value)}
|
|
150
|
+
className="w-full px-3 py-2 rounded-button border border-border bg-background text-foreground"
|
|
151
|
+
>
|
|
152
|
+
<option value="">All</option>
|
|
153
|
+
<option value="active">Active</option>
|
|
154
|
+
<option value="inactive">Inactive</option>
|
|
155
|
+
</select>
|
|
156
|
+
</div>
|
|
157
|
+
<div className="flex gap-2 pt-2">
|
|
158
|
+
<button onClick={() => setStatus("")} className="px-3 py-1 text-sm rounded-button border border-border text-foreground">
|
|
159
|
+
Clear
|
|
160
|
+
</button>
|
|
161
|
+
<button className="px-3 py-1 text-sm rounded-button bg-primary text-primary-foreground">Apply</button>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
</Dropdown>
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Do
|
|
170
|
+
|
|
171
|
+
- Use design-token classes for dropdown item hover states (`hover:bg-floating-hover`, `text-foreground`) instead of raw color utilities.
|
|
172
|
+
- Provide a `title` to help users understand the panel's context.
|
|
173
|
+
- Use the `arrow` prop when the trigger is small and spatial context helps the user.
|
|
174
|
+
- Group related items with separators for panels with more than 5 items.
|
|
175
|
+
|
|
176
|
+
## Don't
|
|
177
|
+
|
|
178
|
+
- Don't pass raw Tailwind color classes (`bg-blue-500`, `text-white`, `hover:bg-gray-100`) — use design-token classes.
|
|
179
|
+
- Don't use arbitrary values (`bg-[#abc]`, `z-[9999]`) — override CSS variables in your `@theme` block.
|
|
180
|
+
- Don't put more than 10–15 items in a single dropdown; consider `CommandPalette` or `Modal` instead.
|
|
181
|
+
- Don't place critical destructive actions in a dropdown without a confirmation step.
|
|
182
|
+
|
|
183
|
+
## Accessibility
|
|
184
|
+
|
|
185
|
+
- The trigger is wrapped in a `<button>` element; pass `aria-label` via `buttonProps` when the trigger has no visible text.
|
|
186
|
+
- The panel receives `aria-labelledby` pointing at the heading generated from `title`.
|
|
187
|
+
- `FloatingFocusManager` traps focus within the panel and restores it to the trigger on close.
|
|
188
|
+
- Clicking outside or pressing `Escape` closes the panel (handled by `useDismiss`).
|
|
189
|
+
- Tab navigation works naturally within the panel content.
|
|
190
|
+
|
|
191
|
+
## Notes
|
|
192
|
+
|
|
193
|
+
- Built on `@floating-ui/react` with `flip`, `shift`, and `offset(10)` middleware. The panel flips to the opposite side if there is insufficient space.
|
|
194
|
+
- When a child element has `data-floating="true"`, focus leaving to that element will not close the dropdown — useful for nested portals.
|
|
195
|
+
- The `open` prop is synced to local state via `useEffect`; controlled and uncontrolled usage are both supported.
|
|
@@ -19,17 +19,17 @@ import { Empty } from "@g4rcez/components";
|
|
|
19
19
|
|
|
20
20
|
## Props
|
|
21
21
|
|
|
22
|
-
| Prop
|
|
23
|
-
|
|
24
|
-
| `Icon`
|
|
25
|
-
| `message` | `string` | Localized "No data available" | Descriptive empty state message
|
|
22
|
+
| Prop | Type | Default | Description |
|
|
23
|
+
| --------- | -------- | ----------------------------- | ---------------------------------- |
|
|
24
|
+
| `Icon` | `Icon` | `FileIcon` | Phosphor icon component to display |
|
|
25
|
+
| `message` | `string` | Localized "No data available" | Descriptive empty state message |
|
|
26
26
|
|
|
27
27
|
## Design Tokens
|
|
28
28
|
|
|
29
29
|
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
30
30
|
|
|
31
|
-
| Token
|
|
32
|
-
|
|
31
|
+
| Token | CSS Variable | Purpose |
|
|
32
|
+
| --------------- | ------------ | --------------------------- |
|
|
33
33
|
| `text-disabled` | `--disabled` | Icon and message text color |
|
|
34
34
|
|
|
35
35
|
## Examples
|
|
@@ -45,7 +45,7 @@ Tokens this component reads. Customize by overriding these CSS variables in your
|
|
|
45
45
|
```tsx
|
|
46
46
|
import { MagnifyingGlassMinusIcon } from "@phosphor-icons/react";
|
|
47
47
|
|
|
48
|
-
<Empty Icon={MagnifyingGlassMinusIcon} message="No results found"
|
|
48
|
+
<Empty Icon={MagnifyingGlassMinusIcon} message="No results found" />;
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
### In a Data Table
|
|
@@ -54,15 +54,15 @@ import { MagnifyingGlassMinusIcon } from "@phosphor-icons/react";
|
|
|
54
54
|
import { DatabaseIcon } from "@phosphor-icons/react";
|
|
55
55
|
|
|
56
56
|
function DataTable({ data }: { data: Item[] }) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
57
|
+
if (data.length === 0) {
|
|
58
|
+
return (
|
|
59
|
+
<div className="py-12">
|
|
60
|
+
<Empty Icon={DatabaseIcon} message="No records found" />
|
|
61
|
+
</div>
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return <table>{/* table content */}</table>;
|
|
66
66
|
}
|
|
67
67
|
```
|
|
68
68
|
|
|
@@ -72,21 +72,21 @@ function DataTable({ data }: { data: Item[] }) {
|
|
|
72
72
|
import { TrayIcon } from "@phosphor-icons/react";
|
|
73
73
|
|
|
74
74
|
function TaskList({ tasks }: { tasks: Task[] }) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
75
|
+
return (
|
|
76
|
+
<div className="space-y-4">
|
|
77
|
+
<h2>My Tasks</h2>
|
|
78
|
+
|
|
79
|
+
{tasks.length === 0 ? (
|
|
80
|
+
<Empty Icon={TrayIcon} message="No tasks yet" />
|
|
81
|
+
) : (
|
|
82
|
+
<ul>
|
|
83
|
+
{tasks.map((task) => (
|
|
84
|
+
<TaskItem key={task.id} task={task} />
|
|
85
|
+
))}
|
|
86
|
+
</ul>
|
|
87
|
+
)}
|
|
88
|
+
</div>
|
|
89
|
+
);
|
|
90
90
|
}
|
|
91
91
|
```
|
|
92
92
|
|
|
@@ -97,19 +97,16 @@ import { Button } from "@g4rcez/components/button";
|
|
|
97
97
|
import { FolderPlusIcon } from "@phosphor-icons/react";
|
|
98
98
|
|
|
99
99
|
function EmptyProjectsList() {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
</div>
|
|
111
|
-
</div>
|
|
112
|
-
);
|
|
100
|
+
return (
|
|
101
|
+
<div className="text-center py-12">
|
|
102
|
+
<Empty Icon={FolderPlusIcon} message="You haven't created any projects yet" />
|
|
103
|
+
<div className="mt-6">
|
|
104
|
+
<Button theme="primary" onClick={handleCreate}>
|
|
105
|
+
Create Your First Project
|
|
106
|
+
</Button>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
);
|
|
113
110
|
}
|
|
114
111
|
```
|
|
115
112
|
|
|
@@ -21,12 +21,12 @@ import { Expand } from "@g4rcez/components/expand";
|
|
|
21
21
|
|
|
22
22
|
`Expand` accepts all `Button` props plus the following:
|
|
23
23
|
|
|
24
|
-
| Prop
|
|
25
|
-
|
|
26
|
-
| `trigger`
|
|
27
|
-
| `open`
|
|
28
|
-
| `disabled` | `boolean`
|
|
29
|
-
| `children` | `React.ReactNode` | —
|
|
24
|
+
| Prop | Type | Default | Description |
|
|
25
|
+
| ---------- | ----------------- | ------- | ---------------------------------------------------- |
|
|
26
|
+
| `trigger` | `Label` | — | Content displayed on the button before expansion |
|
|
27
|
+
| `open` | `boolean` | `false` | Controlled open state |
|
|
28
|
+
| `disabled` | `boolean` | `false` | When `true`, the button cannot be expanded |
|
|
29
|
+
| `children` | `React.ReactNode` | — | Content shown inside the expanded floating container |
|
|
30
30
|
|
|
31
31
|
Inherits all `Button` props: `theme`, `size`, `rounded`, `className`, etc.
|
|
32
32
|
|
|
@@ -34,10 +34,10 @@ Inherits all `Button` props: `theme`, `size`, `rounded`, `className`, etc.
|
|
|
34
34
|
|
|
35
35
|
Tokens this component reads. Customize by overriding these CSS variables in your theme.
|
|
36
36
|
|
|
37
|
-
| Token
|
|
38
|
-
|
|
37
|
+
| Token | CSS Variable | Purpose |
|
|
38
|
+
| --------------- | -------------- | ------------------------------------------------------- |
|
|
39
39
|
| `bg-background` | `--background` | Default expanded panel background (applied by consumer) |
|
|
40
|
-
| `border-border` | `--border`
|
|
40
|
+
| `border-border` | `--border` | Default expanded panel border (applied by consumer) |
|
|
41
41
|
|
|
42
42
|
The `Expand` component itself only renders the trigger button and an animated wrapper; visual tokens for the expanded content are your responsibility via `children` className.
|
|
43
43
|
|
|
@@ -49,28 +49,19 @@ The `Expand` component itself only renders the trigger button and an animated wr
|
|
|
49
49
|
import { PlusIcon } from "@phosphor-icons/react";
|
|
50
50
|
import { Expand } from "@g4rcez/components/expand";
|
|
51
51
|
|
|
52
|
-
<Expand
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
</li>
|
|
66
|
-
<li>
|
|
67
|
-
<button className="w-full rounded-button p-2 text-left text-foreground hover:bg-muted">
|
|
68
|
-
Task
|
|
69
|
-
</button>
|
|
70
|
-
</li>
|
|
71
|
-
</ul>
|
|
72
|
-
</div>
|
|
73
|
-
</Expand>
|
|
52
|
+
<Expand trigger={<PlusIcon size={16} />} theme="primary" size="icon" rounded="circle">
|
|
53
|
+
<div className="w-64 rounded-card border border-border bg-background p-4 shadow-shadow-floating">
|
|
54
|
+
<h3 className="font-bold mb-2 text-foreground">Create New</h3>
|
|
55
|
+
<ul className="space-y-2">
|
|
56
|
+
<li>
|
|
57
|
+
<button className="w-full rounded-button p-2 text-left text-foreground hover:bg-muted">Project</button>
|
|
58
|
+
</li>
|
|
59
|
+
<li>
|
|
60
|
+
<button className="w-full rounded-button p-2 text-left text-foreground hover:bg-muted">Task</button>
|
|
61
|
+
</li>
|
|
62
|
+
</ul>
|
|
63
|
+
</div>
|
|
64
|
+
</Expand>;
|
|
74
65
|
```
|
|
75
66
|
|
|
76
67
|
### Expand with Label
|
|
@@ -80,11 +71,13 @@ import { Expand } from "@g4rcez/components/expand";
|
|
|
80
71
|
import { Button } from "@g4rcez/components/button";
|
|
81
72
|
|
|
82
73
|
<Expand trigger="Open Menu">
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
</
|
|
74
|
+
<div className="rounded-card border border-border bg-background p-4 shadow-shadow-floating">
|
|
75
|
+
<p className="text-foreground">Expanded content goes here.</p>
|
|
76
|
+
<Button theme="primary" className="mt-2">
|
|
77
|
+
Action
|
|
78
|
+
</Button>
|
|
79
|
+
</div>
|
|
80
|
+
</Expand>;
|
|
88
81
|
```
|
|
89
82
|
|
|
90
83
|
### Controlled Expand
|
|
@@ -94,24 +87,17 @@ import { useState } from "react";
|
|
|
94
87
|
import { Expand } from "@g4rcez/components/expand";
|
|
95
88
|
|
|
96
89
|
function ControlledExpand() {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
className="text-sm text-foreground"
|
|
109
|
-
>
|
|
110
|
-
Close
|
|
111
|
-
</button>
|
|
112
|
-
</div>
|
|
113
|
-
</Expand>
|
|
114
|
-
);
|
|
90
|
+
const [open, setOpen] = useState(false);
|
|
91
|
+
|
|
92
|
+
return (
|
|
93
|
+
<Expand trigger="Options" open={open} theme="ghost-neutral">
|
|
94
|
+
<div className="rounded-card border border-border bg-background p-4 shadow-shadow-floating">
|
|
95
|
+
<button onClick={() => setOpen(false)} className="text-sm text-foreground">
|
|
96
|
+
Close
|
|
97
|
+
</button>
|
|
98
|
+
</div>
|
|
99
|
+
</Expand>
|
|
100
|
+
);
|
|
115
101
|
}
|
|
116
102
|
```
|
|
117
103
|
|