@coffer-org/web-ui 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -0
- package/dist/Markdown.d.ts +4 -0
- package/dist/Markdown.js +13 -0
- package/dist/MarkdownEditor.d.ts +6 -0
- package/dist/MarkdownEditor.js +83 -0
- package/dist/actions/ActionButton.d.ts +7 -0
- package/dist/actions/ActionButton.js +54 -0
- package/dist/actions/PopupBody.d.ts +4 -0
- package/dist/actions/PopupBody.js +8 -0
- package/dist/actions/TemplateHost.d.ts +4 -0
- package/dist/actions/TemplateHost.js +36 -0
- package/dist/actions/registry.d.ts +20 -0
- package/dist/actions/registry.js +9 -0
- package/dist/components/ExtendReasonInfo.d.ts +6 -0
- package/dist/components/ExtendReasonInfo.js +12 -0
- package/dist/components/FavoriteButton.d.ts +8 -0
- package/dist/components/FavoriteButton.js +7 -0
- package/dist/components/Icon.d.ts +6 -0
- package/dist/components/Icon.js +12 -0
- package/dist/components/PageBody.d.ts +4 -0
- package/dist/components/PageBody.js +4 -0
- package/dist/components/RecordInline.d.ts +8 -0
- package/dist/components/RecordInline.js +29 -0
- package/dist/components/SaveStatus.d.ts +1 -0
- package/dist/components/SaveStatus.js +11 -0
- package/dist/components/Toolbar.d.ts +5 -0
- package/dist/components/Toolbar.js +4 -0
- package/dist/components/icons/color.d.ts +2 -0
- package/dist/components/icons/color.js +10 -0
- package/dist/components/icons/flag.d.ts +2 -0
- package/dist/components/icons/flag.js +6 -0
- package/dist/components/icons/lucide.d.ts +2 -0
- package/dist/components/icons/lucide.js +111 -0
- package/dist/components/icons/registry.d.ts +4 -0
- package/dist/components/icons/registry.js +22 -0
- package/dist/components/icons/simple.d.ts +2 -0
- package/dist/components/icons/simple.js +15 -0
- package/dist/components/icons/tabler.d.ts +2 -0
- package/dist/components/icons/tabler.js +11 -0
- package/dist/components/ui/FieldLabel.d.ts +9 -0
- package/dist/components/ui/FieldLabel.js +4 -0
- package/dist/components/ui/badge.d.ts +9 -0
- package/dist/components/ui/badge.js +19 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/button.js +33 -0
- package/dist/components/ui/calendar.d.ts +8 -0
- package/dist/components/ui/calendar.js +72 -0
- package/dist/components/ui/card.d.ts +8 -0
- package/dist/components/ui/card.js +16 -0
- package/dist/components/ui/checkbox.d.ts +4 -0
- package/dist/components/ui/checkbox.js +8 -0
- package/dist/components/ui/chip-cls.d.ts +1 -0
- package/dist/components/ui/chip-cls.js +1 -0
- package/dist/components/ui/combobox.d.ts +24 -0
- package/dist/components/ui/combobox.js +58 -0
- package/dist/components/ui/confirm.d.ts +10 -0
- package/dist/components/ui/confirm.js +37 -0
- package/dist/components/ui/date-picker.d.ts +5 -0
- package/dist/components/ui/date-picker.js +16 -0
- package/dist/components/ui/dialog.d.ts +16 -0
- package/dist/components/ui/dialog.js +27 -0
- package/dist/components/ui/dropdown-menu.d.ts +15 -0
- package/dist/components/ui/dropdown-menu.js +18 -0
- package/dist/components/ui/input-group.d.ts +16 -0
- package/dist/components/ui/input-group.js +56 -0
- package/dist/components/ui/input.d.ts +3 -0
- package/dist/components/ui/input.js +6 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/components/ui/label.js +7 -0
- package/dist/components/ui/mask-input.d.ts +61 -0
- package/dist/components/ui/mask-input.js +1052 -0
- package/dist/components/ui/month-year-picker.d.ts +10 -0
- package/dist/components/ui/month-year-picker.js +46 -0
- package/dist/components/ui/option-icon.d.ts +15 -0
- package/dist/components/ui/option-icon.js +19 -0
- package/dist/components/ui/phone-input.d.ts +13 -0
- package/dist/components/ui/phone-input.js +53 -0
- package/dist/components/ui/popover.d.ts +11 -0
- package/dist/components/ui/popover.js +28 -0
- package/dist/components/ui/rating.d.ts +44 -0
- package/dist/components/ui/rating.js +501 -0
- package/dist/components/ui/scroll-area.d.ts +5 -0
- package/dist/components/ui/scroll-area.js +11 -0
- package/dist/components/ui/select-combobox.d.ts +25 -0
- package/dist/components/ui/select-combobox.js +36 -0
- package/dist/components/ui/select.d.ts +13 -0
- package/dist/components/ui/select.js +24 -0
- package/dist/components/ui/separator.d.ts +4 -0
- package/dist/components/ui/separator.js +7 -0
- package/dist/components/ui/switch.d.ts +4 -0
- package/dist/components/ui/switch.js +7 -0
- package/dist/components/ui/textarea.d.ts +3 -0
- package/dist/components/ui/textarea.js +6 -0
- package/dist/components/ui/time-picker.d.ts +84 -0
- package/dist/components/ui/time-picker.js +1258 -0
- package/dist/components/visually-hidden-input.d.ts +10 -0
- package/dist/components/visually-hidden-input.js +96 -0
- package/dist/hooks/use-as-ref.d.ts +3 -0
- package/dist/hooks/use-as-ref.js +10 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts +3 -0
- package/dist/hooks/use-isomorphic-layout-effect.js +3 -0
- package/dist/hooks/use-lazy-ref.d.ts +3 -0
- package/dist/hooks/use-lazy-ref.js +9 -0
- package/dist/hooks/use-media-query.d.ts +3 -0
- package/dist/hooks/use-media-query.js +26 -0
- package/dist/host-services.d.ts +47 -0
- package/dist/host-services.js +35 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.js +69 -0
- package/dist/layout.d.ts +29 -0
- package/dist/layout.js +323 -0
- package/dist/lib/cat-color.d.ts +1 -0
- package/dist/lib/cat-color.js +7 -0
- package/dist/lib/compose-refs.d.ts +5 -0
- package/dist/lib/compose-refs.js +38 -0
- package/dist/lib/date-format.d.ts +9 -0
- package/dist/lib/date-format.js +31 -0
- package/dist/lib/format.d.ts +14 -0
- package/dist/lib/format.js +34 -0
- package/dist/lib/json.d.ts +1 -0
- package/dist/lib/json.js +12 -0
- package/dist/lib/multi-value.d.ts +3 -0
- package/dist/lib/multi-value.js +22 -0
- package/dist/lib/record-option.d.ts +7 -0
- package/dist/lib/record-option.js +52 -0
- package/dist/lib/use-record-labels.d.ts +14 -0
- package/dist/lib/use-record-labels.js +130 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/lib/utils.js +5 -0
- package/dist/list-view.d.ts +26 -0
- package/dist/list-view.js +11 -0
- package/dist/markdown/blocks.d.ts +10 -0
- package/dist/markdown/blocks.js +57 -0
- package/dist/markdown/extensions.d.ts +6 -0
- package/dist/markdown/extensions.js +25 -0
- package/dist/markdown/slash.d.ts +23 -0
- package/dist/markdown/slash.js +27 -0
- package/dist/markdown/toolbar.d.ts +13 -0
- package/dist/markdown/toolbar.js +119 -0
- package/dist/plugin-ui.d.ts +43 -0
- package/dist/plugin-ui.js +37 -0
- package/dist/registry.d.ts +26 -0
- package/dist/registry.js +169 -0
- package/dist/render/blocks/accordion.d.ts +1 -0
- package/dist/render/blocks/accordion.js +15 -0
- package/dist/render/blocks/aside.d.ts +1 -0
- package/dist/render/blocks/aside.js +14 -0
- package/dist/render/blocks/balance.d.ts +1 -0
- package/dist/render/blocks/balance.js +14 -0
- package/dist/render/blocks/bento.d.ts +1 -0
- package/dist/render/blocks/bento.js +24 -0
- package/dist/render/blocks/block-shell.d.ts +15 -0
- package/dist/render/blocks/block-shell.js +20 -0
- package/dist/render/blocks/calendar.d.ts +1 -0
- package/dist/render/blocks/calendar.js +142 -0
- package/dist/render/blocks/callout.d.ts +1 -0
- package/dist/render/blocks/callout.js +21 -0
- package/dist/render/blocks/chart.d.ts +1 -0
- package/dist/render/blocks/chart.js +46 -0
- package/dist/render/blocks/compare.d.ts +1 -0
- package/dist/render/blocks/compare.js +16 -0
- package/dist/render/blocks/countdown.d.ts +1 -0
- package/dist/render/blocks/countdown.js +36 -0
- package/dist/render/blocks/deck.d.ts +1 -0
- package/dist/render/blocks/deck.js +29 -0
- package/dist/render/blocks/epigraph.d.ts +1 -0
- package/dist/render/blocks/epigraph.js +13 -0
- package/dist/render/blocks/facets.d.ts +1 -0
- package/dist/render/blocks/facets.js +23 -0
- package/dist/render/blocks/figure.d.ts +1 -0
- package/dist/render/blocks/figure.js +13 -0
- package/dist/render/blocks/grid.d.ts +1 -0
- package/dist/render/blocks/grid.js +21 -0
- package/dist/render/blocks/heatmap.d.ts +1 -0
- package/dist/render/blocks/heatmap.js +135 -0
- package/dist/render/blocks/idcard.d.ts +1 -0
- package/dist/render/blocks/idcard.js +30 -0
- package/dist/render/blocks/identity.d.ts +1 -0
- package/dist/render/blocks/identity.js +46 -0
- package/dist/render/blocks/index.d.ts +40 -0
- package/dist/render/blocks/index.js +40 -0
- package/dist/render/blocks/journal.d.ts +1 -0
- package/dist/render/blocks/journal.js +50 -0
- package/dist/render/blocks/ledger.d.ts +1 -0
- package/dist/render/blocks/ledger.js +23 -0
- package/dist/render/blocks/manifest.d.ts +1 -0
- package/dist/render/blocks/manifest.js +50 -0
- package/dist/render/blocks/masthead.d.ts +1 -0
- package/dist/render/blocks/masthead.js +15 -0
- package/dist/render/blocks/meter.d.ts +1 -0
- package/dist/render/blocks/meter.js +32 -0
- package/dist/render/blocks/nutrition.d.ts +1 -0
- package/dist/render/blocks/nutrition.js +27 -0
- package/dist/render/blocks/people.d.ts +1 -0
- package/dist/render/blocks/people.js +35 -0
- package/dist/render/blocks/plaque.d.ts +1 -0
- package/dist/render/blocks/plaque.js +15 -0
- package/dist/render/blocks/properties.d.ts +1 -0
- package/dist/render/blocks/properties.js +22 -0
- package/dist/render/blocks/prose.d.ts +1 -0
- package/dist/render/blocks/prose.js +17 -0
- package/dist/render/blocks/receipt.d.ts +1 -0
- package/dist/render/blocks/receipt.js +23 -0
- package/dist/render/blocks/registry.d.ts +16 -0
- package/dist/render/blocks/registry.js +7 -0
- package/dist/render/blocks/relation-source.d.ts +2 -0
- package/dist/render/blocks/relation-source.js +6 -0
- package/dist/render/blocks/route.d.ts +1 -0
- package/dist/render/blocks/route.js +23 -0
- package/dist/render/blocks/score.d.ts +1 -0
- package/dist/render/blocks/score.js +15 -0
- package/dist/render/blocks/series.d.ts +23 -0
- package/dist/render/blocks/series.js +57 -0
- package/dist/render/blocks/specimen.d.ts +1 -0
- package/dist/render/blocks/specimen.js +19 -0
- package/dist/render/blocks/split.d.ts +1 -0
- package/dist/render/blocks/split.js +15 -0
- package/dist/render/blocks/spread.d.ts +1 -0
- package/dist/render/blocks/spread.js +15 -0
- package/dist/render/blocks/stack.d.ts +1 -0
- package/dist/render/blocks/stack.js +15 -0
- package/dist/render/blocks/stats.d.ts +1 -0
- package/dist/render/blocks/stats.js +23 -0
- package/dist/render/blocks/status.d.ts +1 -0
- package/dist/render/blocks/status.js +18 -0
- package/dist/render/blocks/table.d.ts +11 -0
- package/dist/render/blocks/table.js +136 -0
- package/dist/render/blocks/tabs.d.ts +1 -0
- package/dist/render/blocks/tabs.js +17 -0
- package/dist/render/blocks/terminal.d.ts +1 -0
- package/dist/render/blocks/terminal.js +18 -0
- package/dist/render/blocks/timeline.d.ts +1 -0
- package/dist/render/blocks/timeline.js +31 -0
- package/dist/render/box.d.ts +5 -0
- package/dist/render/box.js +23 -0
- package/dist/render/chrome.d.ts +64 -0
- package/dist/render/chrome.js +92 -0
- package/dist/render/core/amount.d.ts +1 -0
- package/dist/render/core/amount.js +19 -0
- package/dist/render/core/attachment.d.ts +29 -0
- package/dist/render/core/attachment.js +102 -0
- package/dist/render/core/choice.d.ts +1 -0
- package/dist/render/core/choice.js +40 -0
- package/dist/render/core/composite.d.ts +1 -0
- package/dist/render/core/composite.js +132 -0
- package/dist/render/core/datetime.d.ts +2 -0
- package/dist/render/core/datetime.js +215 -0
- package/dist/render/core/dimensions.d.ts +1 -0
- package/dist/render/core/dimensions.js +44 -0
- package/dist/render/core/embed.d.ts +11 -0
- package/dist/render/core/embed.js +99 -0
- package/dist/render/core/file.d.ts +12 -0
- package/dist/render/core/file.js +238 -0
- package/dist/render/core/illustrated.d.ts +39 -0
- package/dist/render/core/illustrated.js +113 -0
- package/dist/render/core/index.d.ts +23 -0
- package/dist/render/core/index.js +23 -0
- package/dist/render/core/layout-elements.d.ts +1 -0
- package/dist/render/core/layout-elements.js +78 -0
- package/dist/render/core/localpath.d.ts +6 -0
- package/dist/render/core/localpath.js +73 -0
- package/dist/render/core/money.d.ts +1 -0
- package/dist/render/core/money.js +39 -0
- package/dist/render/core/number.d.ts +17 -0
- package/dist/render/core/number.js +104 -0
- package/dist/render/core/period.d.ts +1 -0
- package/dist/render/core/period.js +60 -0
- package/dist/render/core/range.d.ts +1 -0
- package/dist/render/core/range.js +55 -0
- package/dist/render/core/reminder.d.ts +2 -0
- package/dist/render/core/reminder.js +56 -0
- package/dist/render/core/source.d.ts +3 -0
- package/dist/render/core/source.js +65 -0
- package/dist/render/core/stepper.d.ts +1 -0
- package/dist/render/core/stepper.js +81 -0
- package/dist/render/core/storage-group.d.ts +1 -0
- package/dist/render/core/storage-group.js +30 -0
- package/dist/render/core/text.d.ts +15 -0
- package/dist/render/core/text.js +370 -0
- package/dist/render/core/tristate.d.ts +1 -0
- package/dist/render/core/tristate.js +42 -0
- package/dist/render/core/weight.d.ts +4 -0
- package/dist/render/core/weight.js +38 -0
- package/dist/render/dispatch.d.ts +12 -0
- package/dist/render/dispatch.js +53 -0
- package/dist/render/display-override.d.ts +25 -0
- package/dist/render/display-override.js +23 -0
- package/dist/render/editor-mode.d.ts +4 -0
- package/dist/render/editor-mode.js +11 -0
- package/dist/render/field-address.d.ts +14 -0
- package/dist/render/field-address.js +10 -0
- package/dist/render/field-errors.d.ts +8 -0
- package/dist/render/field-errors.js +25 -0
- package/dist/render/field-frame.d.ts +20 -0
- package/dist/render/field-frame.js +78 -0
- package/dist/render/field-scope.d.ts +8 -0
- package/dist/render/field-scope.js +25 -0
- package/dist/render/field-width.d.ts +7 -0
- package/dist/render/field-width.js +12 -0
- package/dist/render/form-types.d.ts +12 -0
- package/dist/render/form-types.js +1 -0
- package/dist/render/hybrid-scope.d.ts +5 -0
- package/dist/render/hybrid-scope.js +9 -0
- package/dist/render/image.d.ts +64 -0
- package/dist/render/image.js +322 -0
- package/dist/render/live-kind.d.ts +7 -0
- package/dist/render/live-kind.js +104 -0
- package/dist/render/markdown-view.d.ts +5 -0
- package/dist/render/markdown-view.js +17 -0
- package/dist/render/multi.d.ts +10 -0
- package/dist/render/multi.js +26 -0
- package/dist/render/multiple-chips.d.ts +24 -0
- package/dist/render/multiple-chips.js +18 -0
- package/dist/render/option-list.d.ts +15 -0
- package/dist/render/option-list.js +47 -0
- package/dist/render/option-value.d.ts +20 -0
- package/dist/render/option-value.js +41 -0
- package/dist/render/picker-scrim.d.ts +7 -0
- package/dist/render/picker-scrim.js +32 -0
- package/dist/render/picker-surface.d.ts +5 -0
- package/dist/render/picker-surface.js +9 -0
- package/dist/render/popover-field.d.ts +16 -0
- package/dist/render/popover-field.js +153 -0
- package/dist/render/record-save-ctx.d.ts +11 -0
- package/dist/render/record-save-ctx.js +41 -0
- package/dist/render/shared.d.ts +92 -0
- package/dist/render/shared.js +182 -0
- package/dist/render/slot.d.ts +45 -0
- package/dist/render/slot.js +194 -0
- package/dist/render/sort-rows.d.ts +3 -0
- package/dist/render/sort-rows.js +38 -0
- package/dist/render/use-collection-rows.d.ts +10 -0
- package/dist/render/use-collection-rows.js +11 -0
- package/dist/render/use-field-edit.d.ts +28 -0
- package/dist/render/use-field-edit.js +50 -0
- package/dist/render/use-file-upload.d.ts +10 -0
- package/dist/render/use-file-upload.js +35 -0
- package/dist/render/use-form-bridge.d.ts +21 -0
- package/dist/render/use-form-bridge.js +53 -0
- package/dist/render/use-hybrid.d.ts +2 -0
- package/dist/render/use-hybrid.js +5 -0
- package/dist/render/widgets/attachment-group.d.ts +1 -0
- package/dist/render/widgets/attachment-group.js +35 -0
- package/dist/render/widgets/checklist-content.d.ts +15 -0
- package/dist/render/widgets/checklist-content.js +12 -0
- package/dist/render/widgets/checklist-group.d.ts +11 -0
- package/dist/render/widgets/checklist-group.js +47 -0
- package/dist/render/widgets/checklist-row.d.ts +14 -0
- package/dist/render/widgets/checklist-row.js +14 -0
- package/dist/render/widgets/display.d.ts +33 -0
- package/dist/render/widgets/display.js +97 -0
- package/dist/render/widgets/edit.d.ts +63 -0
- package/dist/render/widgets/edit.js +283 -0
- package/dist/render/widgets/fixed-collection.d.ts +11 -0
- package/dist/render/widgets/fixed-collection.js +34 -0
- package/dist/render/widgets/flow-row.d.ts +14 -0
- package/dist/render/widgets/flow-row.js +27 -0
- package/dist/render/widgets/group-edit.d.ts +9 -0
- package/dist/render/widgets/group-edit.js +23 -0
- package/dist/render/widgets/group-field.d.ts +9 -0
- package/dist/render/widgets/group-field.js +42 -0
- package/dist/render/widgets/group-widgets.d.ts +2 -0
- package/dist/render/widgets/group-widgets.js +41 -0
- package/dist/render/widgets/group.d.ts +26 -0
- package/dist/render/widgets/group.js +139 -0
- package/dist/render/widgets/illustrated-group.d.ts +1 -0
- package/dist/render/widgets/illustrated-group.js +41 -0
- package/dist/render/widgets/table-group.d.ts +11 -0
- package/dist/render/widgets/table-group.js +58 -0
- package/dist/render/widgets/two-cell-group.d.ts +21 -0
- package/dist/render/widgets/two-cell-group.js +42 -0
- package/dist/render/widgets/url-widget.d.ts +7 -0
- package/dist/render/widgets/url-widget.js +15 -0
- package/dist/render/widgets/weekday-grid.d.ts +13 -0
- package/dist/render/widgets/weekday-grid.js +47 -0
- package/dist/render/write.d.ts +5 -0
- package/dist/render/write.js +14 -0
- package/dist/schema-registry.d.ts +6 -0
- package/dist/schema-registry.js +25 -0
- package/dist/site-links.d.ts +13 -0
- package/dist/site-links.js +18 -0
- package/dist/strip-markdown.d.ts +1 -0
- package/dist/strip-markdown.js +11 -0
- package/dist/theme.css +189 -0
- package/dist/types.d.ts +84 -0
- package/dist/types.js +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface PickerProps {
|
|
2
|
+
value: string;
|
|
3
|
+
onChange: (v: string) => void;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function YearPicker({ value, onChange, placeholder }: PickerProps): import("react").JSX.Element;
|
|
7
|
+
export declare function MonthPicker({ value, onChange, placeholder }: PickerProps): import("react").JSX.Element;
|
|
8
|
+
export declare function YearGridPanel({ value, onChange }: Omit<PickerProps, 'placeholder'>): import("react").JSX.Element;
|
|
9
|
+
export declare function MonthGridPanel({ value, onChange }: Omit<PickerProps, 'placeholder'>): import("react").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { DatePicker, parseDate } from '@ark-ui/react/date-picker';
|
|
3
|
+
import { Portal } from '@ark-ui/react/portal';
|
|
4
|
+
import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';
|
|
5
|
+
import { cn } from "../../lib/utils.js";
|
|
6
|
+
import { buttonVariants } from "./button.js";
|
|
7
|
+
const contentCls = 'z-50 w-72 rounded-xl border border-border bg-popover p-3 text-popover-foreground shadow-xl outline-hidden data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95';
|
|
8
|
+
const tableCls = 'w-full table-fixed border-separate border-spacing-1';
|
|
9
|
+
const cellCls = cn(buttonVariants({ variant: 'ghost' }), 'w-full px-0 font-normal data-[selected]:bg-primary data-[selected]:text-primary-foreground data-[selected]:hover:bg-primary');
|
|
10
|
+
const navBtnCls = cn(buttonVariants({ variant: 'ghost', size: 'icon' }), 'size-7');
|
|
11
|
+
function ViewHeader({ withViewTrigger = false }) {
|
|
12
|
+
return (_jsxs(DatePicker.ViewControl, { className: "flex items-center justify-between gap-1 pb-2", children: [_jsx(DatePicker.PrevTrigger, { className: navBtnCls, children: _jsx(ChevronLeftIcon, { className: "size-4" }) }), withViewTrigger ? (_jsx(DatePicker.ViewTrigger, { className: cn(buttonVariants({ variant: 'ghost', size: 'sm' }), 'h-7 text-sm font-medium'), children: _jsx(DatePicker.RangeText, {}) })) : (_jsx("span", { className: "text-sm font-medium", children: _jsx(DatePicker.RangeText, {}) })), _jsx(DatePicker.NextTrigger, { className: navBtnCls, children: _jsx(ChevronRightIcon, { className: "size-4" }) })] }));
|
|
13
|
+
}
|
|
14
|
+
function YearGrid() {
|
|
15
|
+
return (_jsx(DatePicker.Context, { children: (api) => (_jsx(DatePicker.Table, { className: tableCls, children: _jsx(DatePicker.TableBody, { children: api.getYearsGrid({ columns: 4 }).map((row, i) => (_jsx(DatePicker.TableRow, { children: row.map((cell, j) => (_jsx(DatePicker.TableCell, { value: cell.value, children: _jsx(DatePicker.TableCellTrigger, { className: cellCls, children: cell.label }) }, j))) }, i))) }) })) }));
|
|
16
|
+
}
|
|
17
|
+
function MonthGrid() {
|
|
18
|
+
return (_jsx(DatePicker.Context, { children: (api) => (_jsx(DatePicker.Table, { className: tableCls, children: _jsx(DatePicker.TableBody, { children: api.getMonthsGrid({ columns: 3, format: 'short' }).map((row, i) => (_jsx(DatePicker.TableRow, { children: row.map((cell, j) => (_jsx(DatePicker.TableCell, { value: cell.value, children: _jsx(DatePicker.TableCellTrigger, { className: cellCls, children: cell.label }) }, j))) }, i))) }) })) }));
|
|
19
|
+
}
|
|
20
|
+
function TriggerButton({ display, placeholder }) {
|
|
21
|
+
return (_jsx(DatePicker.Control, { className: "w-full", children: _jsxs(DatePicker.Trigger, { className: cn(buttonVariants({ variant: 'outline' }), 'w-full justify-between px-3 font-normal'), children: [display || _jsx("span", { className: "text-muted-foreground", children: placeholder }), _jsx(ChevronDownIcon, { className: "size-4 shrink-0 opacity-50" })] }) }));
|
|
22
|
+
}
|
|
23
|
+
export function YearPicker({ value, onChange, placeholder = 'YYYY' }) {
|
|
24
|
+
const selected = /^\d{4}$/.test(value) ? [parseDate(`${value}-01-01`)] : [];
|
|
25
|
+
return (_jsxs(DatePicker.Root, { value: selected, onValueChange: (d) => onChange(d.value[0] ? String(d.value[0].year) : ''), defaultView: "year", minView: "year", children: [_jsx(TriggerButton, { display: value, placeholder: placeholder }), _jsx(Portal, { children: _jsx(DatePicker.Positioner, { children: _jsx(DatePicker.Content, { className: contentCls, children: _jsxs(DatePicker.View, { view: "year", children: [_jsx(ViewHeader, {}), _jsx(YearGrid, {})] }) }) }) })] }));
|
|
26
|
+
}
|
|
27
|
+
export function MonthPicker({ value, onChange, placeholder = 'MM.YYYY' }) {
|
|
28
|
+
const m = /^(\d{4})-(\d{2})$/.exec(value);
|
|
29
|
+
const selected = m ? [parseDate(`${value}-01`)] : [];
|
|
30
|
+
return (_jsxs(DatePicker.Root, { value: selected, onValueChange: (d) => {
|
|
31
|
+
const v = d.value[0];
|
|
32
|
+
onChange(v ? `${v.year}-${String(v.month).padStart(2, '0')}` : '');
|
|
33
|
+
}, defaultView: "month", minView: "month", children: [_jsx(TriggerButton, { display: m ? `${m[2]}.${m[1]}` : '', placeholder: placeholder }), _jsx(Portal, { children: _jsx(DatePicker.Positioner, { children: _jsxs(DatePicker.Content, { className: contentCls, children: [_jsxs(DatePicker.View, { view: "month", children: [_jsx(ViewHeader, { withViewTrigger: true }), _jsx(MonthGrid, {})] }), _jsxs(DatePicker.View, { view: "year", children: [_jsx(ViewHeader, {}), _jsx(YearGrid, {})] })] }) }) })] }));
|
|
34
|
+
}
|
|
35
|
+
export function YearGridPanel({ value, onChange }) {
|
|
36
|
+
const selected = /^\d{4}$/.test(value) ? [parseDate(`${value}-01-01`)] : [];
|
|
37
|
+
return (_jsx(DatePicker.Root, { inline: true, value: selected, onValueChange: (d) => onChange(d.value[0] ? String(d.value[0].year) : ''), defaultView: "year", minView: "year", children: _jsxs(DatePicker.View, { view: "year", children: [_jsx(ViewHeader, {}), _jsx(YearGrid, {})] }) }));
|
|
38
|
+
}
|
|
39
|
+
export function MonthGridPanel({ value, onChange }) {
|
|
40
|
+
const m = /^(\d{4})-(\d{2})$/.exec(value);
|
|
41
|
+
const selected = m ? [parseDate(`${value}-01`)] : [];
|
|
42
|
+
return (_jsxs(DatePicker.Root, { inline: true, value: selected, onValueChange: (d) => {
|
|
43
|
+
const v = d.value[0];
|
|
44
|
+
onChange(v ? `${v.year}-${String(v.month).padStart(2, '0')}` : '');
|
|
45
|
+
}, defaultView: "month", minView: "month", children: [_jsxs(DatePicker.View, { view: "month", children: [_jsx(ViewHeader, { withViewTrigger: true }), _jsx(MonthGrid, {})] }), _jsxs(DatePicker.View, { view: "year", children: [_jsx(ViewHeader, {}), _jsx(YearGrid, {})] })] }));
|
|
46
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { OptionIcon } from '@coffer-org/sdk/fields';
|
|
2
|
+
declare const PX: {
|
|
3
|
+
readonly xs: 14;
|
|
4
|
+
readonly sm: 16;
|
|
5
|
+
readonly md: 20;
|
|
6
|
+
readonly lg: 28;
|
|
7
|
+
};
|
|
8
|
+
export type OptionIconSize = keyof typeof PX;
|
|
9
|
+
export declare function OptionIconView({ icon, size, framed, className, }: {
|
|
10
|
+
icon: OptionIcon;
|
|
11
|
+
size?: OptionIconSize;
|
|
12
|
+
framed?: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
}): import("react").JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Icon } from "../Icon.js";
|
|
3
|
+
const PX = { xs: 14, sm: 16, md: 20, lg: 28 };
|
|
4
|
+
export function OptionIconView({ icon, size = 'sm', framed = false, className, }) {
|
|
5
|
+
const px = PX[size];
|
|
6
|
+
if (framed) {
|
|
7
|
+
const box = { width: px, height: px };
|
|
8
|
+
if (icon.kind === 'image')
|
|
9
|
+
return (_jsx("img", { src: icon.value, alt: "", loading: "lazy", className: `shrink-0 rounded-full border border-border object-cover ${className ?? ''}`, style: box }));
|
|
10
|
+
if (icon.kind === 'swatch')
|
|
11
|
+
return (_jsx("span", { className: `shrink-0 rounded-full border border-border ${className ?? ''}`, style: { ...box, backgroundColor: icon.value } }));
|
|
12
|
+
return (_jsx("span", { className: `shrink-0 grid place-items-center rounded-full border border-border bg-elevated text-muted ${className ?? ''}`, style: box, children: _jsx(Icon, { name: icon.value, size: Math.round(px * 0.55) }) }));
|
|
13
|
+
}
|
|
14
|
+
if (icon.kind === 'swatch')
|
|
15
|
+
return (_jsx("span", { className: `shrink-0 inline-block rounded-full border border-border/60 ${className ?? ''}`, style: { width: px, height: px, backgroundColor: icon.value } }));
|
|
16
|
+
if (icon.kind === 'image')
|
|
17
|
+
return (_jsx("img", { src: icon.value, alt: "", loading: "lazy", className: `shrink-0 rounded-full border border-border object-cover ${className ?? ''}`, style: { width: px, height: px } }));
|
|
18
|
+
return _jsx(Icon, { name: icon.value, size: px, className: `shrink-0 ${className ?? ''}` });
|
|
19
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
import * as BasePhoneInput from 'react-phone-number-input';
|
|
3
|
+
type PhoneInputSize = 'sm' | 'default' | 'lg';
|
|
4
|
+
type PhoneInputProps = Omit<ComponentProps<'input'>, 'onChange' | 'value' | 'ref'> & Omit<BasePhoneInput.Props<typeof BasePhoneInput.default>, 'onChange' | 'variant' | 'popupClassName' | 'scrollAreaClassName'> & {
|
|
5
|
+
onChange?: (value: BasePhoneInput.Value) => void;
|
|
6
|
+
variant?: PhoneInputSize;
|
|
7
|
+
popupClassName?: string;
|
|
8
|
+
scrollAreaClassName?: string;
|
|
9
|
+
inputClassName?: string;
|
|
10
|
+
triggerClassName?: string;
|
|
11
|
+
};
|
|
12
|
+
declare const PhoneInput: ({ className, variant, popupClassName, scrollAreaClassName, inputClassName, triggerClassName, onChange, value, ...props }: PhoneInputProps) => import("react").JSX.Element;
|
|
13
|
+
export { PhoneInput };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useMemo, useState } from 'react';
|
|
3
|
+
import * as BasePhoneInput from 'react-phone-number-input';
|
|
4
|
+
import flags from 'react-phone-number-input/flags';
|
|
5
|
+
import { Button } from "./button.js";
|
|
6
|
+
import { Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, } from "./combobox.js";
|
|
7
|
+
import { Input } from "./input.js";
|
|
8
|
+
import { ScrollArea } from "./scroll-area.js";
|
|
9
|
+
import { cn } from "../../lib/utils.js";
|
|
10
|
+
import { EarthIcon } from 'lucide-react';
|
|
11
|
+
const PhoneInputContext = createContext({
|
|
12
|
+
variant: 'default',
|
|
13
|
+
popupClassName: undefined,
|
|
14
|
+
scrollAreaClassName: undefined,
|
|
15
|
+
inputClassName: undefined,
|
|
16
|
+
triggerClassName: undefined,
|
|
17
|
+
readOnly: false,
|
|
18
|
+
});
|
|
19
|
+
const PhoneInput = ({ className, variant, popupClassName, scrollAreaClassName, inputClassName, triggerClassName, onChange, value, ...props }) => {
|
|
20
|
+
const phoneInputSize = variant || 'default';
|
|
21
|
+
return (_jsx(PhoneInputContext.Provider, { value: {
|
|
22
|
+
variant: phoneInputSize,
|
|
23
|
+
popupClassName,
|
|
24
|
+
scrollAreaClassName,
|
|
25
|
+
inputClassName,
|
|
26
|
+
triggerClassName,
|
|
27
|
+
readOnly: props.readOnly,
|
|
28
|
+
}, children: _jsx(BasePhoneInput.default, { className: cn('flex', props['aria-invalid'] &&
|
|
29
|
+
'[&_*[data-slot=combobox-trigger]]:border-destructive [&_*[data-slot=combobox-trigger]]:ring-destructive/50', className), flagComponent: FlagComponent, countrySelectComponent: CountrySelect, inputComponent: InputComponent, smartCaret: false, value: value || undefined, onChange: (value) => onChange?.(value || ''), ...props }) }));
|
|
30
|
+
};
|
|
31
|
+
const InputComponent = ({ className, ...props }) => {
|
|
32
|
+
const { variant, inputClassName } = useContext(PhoneInputContext);
|
|
33
|
+
return (_jsx(Input, { className: cn('rounded-l-none focus:z-1', variant === 'sm' && 'h-auto! py-0!', variant === 'lg' && 'h-auto!', inputClassName, className), ...props }));
|
|
34
|
+
};
|
|
35
|
+
const CountrySelect = ({ disabled, value: selectedCountry, options: countryList, onChange }) => {
|
|
36
|
+
const { variant, popupClassName, triggerClassName, readOnly } = useContext(PhoneInputContext);
|
|
37
|
+
const [searchValue, setSearchValue] = useState('');
|
|
38
|
+
const filteredCountries = useMemo(() => {
|
|
39
|
+
if (!searchValue)
|
|
40
|
+
return countryList;
|
|
41
|
+
return countryList.filter(({ label }) => label.toLowerCase().includes(searchValue.toLowerCase()));
|
|
42
|
+
}, [countryList, searchValue]);
|
|
43
|
+
return (_jsxs(Combobox, { items: filteredCountries, value: selectedCountry || '', onValueChange: (country) => {
|
|
44
|
+
if (country) {
|
|
45
|
+
onChange(country);
|
|
46
|
+
}
|
|
47
|
+
}, children: [_jsx(ComboboxTrigger, { render: _jsxs(Button, { variant: "outline", size: variant, className: cn('flex gap-1 rounded-r-none border-e-0 px-2.5 py-0 leading-none hover:bg-transparent focus:z-10 aria-pressed:bg-transparent', disabled && 'dark:disabled:bg-input/80', triggerClassName), disabled: disabled || readOnly, children: [_jsx("span", { className: "sr-only", children: _jsx(ComboboxValue, {}) }), _jsx(FlagComponent, { country: selectedCountry, countryName: selectedCountry })] }) }), _jsxs(ComboboxContent, { className: cn('w-xs *:data-[slot=input-group]:bg-transparent', popupClassName), children: [_jsx(ComboboxInput, { placeholder: "e.g. United States", value: searchValue, onChange: (e) => setSearchValue(e.target.value), showTrigger: false, className: "border-input focus-visible:border-border rounded-none border-0 px-0 py-2.5 shadow-none ring-0! outline-none! focus-visible:ring-0 focus-visible:ring-offset-0" }), _jsx(ComboboxSeparator, {}), _jsx(ComboboxEmpty, { className: "px-4 py-2.5 text-sm", children: "No country found." }), _jsx(ComboboxList, { children: _jsx("div", { className: "relative flex max-h-full", children: _jsx("div", { className: "flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain", children: _jsx(ScrollArea, { className: "size-full min-h-0 **:data-[slot=scroll-area-scrollbar]:m-0 [&_[data-slot=scroll-area-viewport]]:h-full [&_[data-slot=scroll-area-viewport]]:overscroll-contain", children: filteredCountries.map((item) => item.value ? (_jsxs(ComboboxItem, { value: item.value, className: "flex items-center gap-2", children: [_jsx(FlagComponent, { country: item.value, countryName: item.label }), _jsx("span", { className: "flex-1 text-sm", children: item.label }), _jsx("span", { className: "text-foreground/50 text-sm", children: `+${BasePhoneInput.getCountryCallingCode(item.value)}` })] }, item.value)) : null) }) }) }) })] })] }));
|
|
48
|
+
};
|
|
49
|
+
const FlagComponent = ({ country, countryName }) => {
|
|
50
|
+
const Flag = flags[country];
|
|
51
|
+
return (_jsx("span", { className: "flex h-4 w-4 items-center justify-center [&_svg:not([class*='size-'])]:size-full! [&_svg:not([class*='size-'])]:rounded-[5px]", children: Flag ? _jsx(Flag, { title: countryName }) : _jsx(EarthIcon, { className: "size-4 opacity-60" }) }));
|
|
52
|
+
};
|
|
53
|
+
export { PhoneInput };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
3
|
+
declare function Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>): React.JSX.Element;
|
|
4
|
+
declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>): React.JSX.Element;
|
|
5
|
+
declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof PopoverPrimitive.Content>): React.JSX.Element;
|
|
6
|
+
declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>): React.JSX.Element;
|
|
7
|
+
declare function PopoverArrow({ className, ...props }: React.ComponentProps<typeof PopoverPrimitive.Arrow>): React.JSX.Element;
|
|
8
|
+
declare function PopoverHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
9
|
+
declare function PopoverTitle({ className, ...props }: React.ComponentProps<'h2'>): React.JSX.Element;
|
|
10
|
+
declare function PopoverDescription({ className, ...props }: React.ComponentProps<'p'>): React.JSX.Element;
|
|
11
|
+
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverArrow, PopoverHeader, PopoverTitle, PopoverDescription, };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
function Popover({ ...props }) {
|
|
5
|
+
return _jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
|
|
6
|
+
}
|
|
7
|
+
function PopoverTrigger({ ...props }) {
|
|
8
|
+
return _jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
9
|
+
}
|
|
10
|
+
function PopoverContent({ className, align = 'center', sideOffset = 4, ...props }) {
|
|
11
|
+
return (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn('z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-xl border border-border bg-popover p-4 text-popover-foreground shadow-xl outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95', className), ...props }) }));
|
|
12
|
+
}
|
|
13
|
+
function PopoverAnchor({ ...props }) {
|
|
14
|
+
return _jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
|
|
15
|
+
}
|
|
16
|
+
function PopoverArrow({ className, ...props }) {
|
|
17
|
+
return (_jsx(PopoverPrimitive.Arrow, { asChild: true, width: 16, height: 8, ...props, children: _jsxs("span", { "data-slot": "popover-arrow", className: cn('relative block h-2 w-4', className), children: [_jsx("span", { className: "absolute inset-0 bg-border [clip-path:polygon(50%_100%,0_0,100%_0)]" }), _jsx("span", { className: "absolute inset-x-px top-0 bottom-px bg-popover [clip-path:polygon(50%_100%,0_0,100%_0)]" })] }) }));
|
|
18
|
+
}
|
|
19
|
+
function PopoverHeader({ className, ...props }) {
|
|
20
|
+
return _jsx("div", { "data-slot": "popover-header", className: cn('flex flex-col gap-1 text-sm', className), ...props });
|
|
21
|
+
}
|
|
22
|
+
function PopoverTitle({ className, ...props }) {
|
|
23
|
+
return _jsx("div", { "data-slot": "popover-title", className: cn('font-medium', className), ...props });
|
|
24
|
+
}
|
|
25
|
+
function PopoverDescription({ className, ...props }) {
|
|
26
|
+
return _jsx("p", { "data-slot": "popover-description", className: cn('text-muted-foreground', className), ...props });
|
|
27
|
+
}
|
|
28
|
+
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverArrow, PopoverHeader, PopoverTitle, PopoverDescription, };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type Direction = 'ltr' | 'rtl';
|
|
3
|
+
type Orientation = 'horizontal' | 'vertical';
|
|
4
|
+
type ActivationMode = 'automatic' | 'manual';
|
|
5
|
+
type Size = 'default' | 'sm' | 'lg';
|
|
6
|
+
type Step = 0.5 | 1;
|
|
7
|
+
type DataState = 'full' | 'partial' | 'empty';
|
|
8
|
+
interface StoreState {
|
|
9
|
+
value: number;
|
|
10
|
+
hoveredValue: number | null;
|
|
11
|
+
}
|
|
12
|
+
interface Store {
|
|
13
|
+
subscribe: (callback: () => void) => () => void;
|
|
14
|
+
getState: () => StoreState;
|
|
15
|
+
setState: <K extends keyof StoreState>(key: K, value: StoreState[K]) => void;
|
|
16
|
+
notify: () => void;
|
|
17
|
+
}
|
|
18
|
+
declare function useStore<T>(selector: (state: StoreState) => T, ogStore?: Store | null): T;
|
|
19
|
+
interface RatingProps extends React.ComponentProps<'div'> {
|
|
20
|
+
value?: number;
|
|
21
|
+
defaultValue?: number;
|
|
22
|
+
onValueChange?: (value: number) => void;
|
|
23
|
+
onHover?: (value: number | null) => void;
|
|
24
|
+
max?: number;
|
|
25
|
+
activationMode?: ActivationMode;
|
|
26
|
+
dir?: Direction;
|
|
27
|
+
orientation?: Orientation;
|
|
28
|
+
size?: Size;
|
|
29
|
+
asChild?: boolean;
|
|
30
|
+
step?: Step;
|
|
31
|
+
clearable?: boolean;
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
readOnly?: boolean;
|
|
34
|
+
required?: boolean;
|
|
35
|
+
name?: string;
|
|
36
|
+
}
|
|
37
|
+
declare function Rating(props: RatingProps): React.JSX.Element;
|
|
38
|
+
interface RatingItemProps extends Omit<React.ComponentProps<'button'>, 'children'> {
|
|
39
|
+
index?: number;
|
|
40
|
+
asChild?: boolean;
|
|
41
|
+
children?: React.ReactNode | ((dataState: DataState) => React.ReactNode);
|
|
42
|
+
}
|
|
43
|
+
declare function RatingItem(props: RatingItemProps): React.JSX.Element;
|
|
44
|
+
export { Rating, RatingItem, useStore as useRating };
|