@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
package/dist/theme.css
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kit's own theme tokens. Every component under packages/web-ui/src renders through
|
|
3
|
+
* these custom properties (--bg, --surface, --border, --accent and their neighbours) and the
|
|
4
|
+
* Tailwind semantic mapping below (@theme inline) that turns them into utility classes
|
|
5
|
+
* (bg-surface, border-border, text-accent, …). A kit whose colours are defined by its
|
|
6
|
+
* consumer is not a kit: the application imports this file (`@import '@coffer-org/web-ui/theme.css';`
|
|
7
|
+
* in its own global stylesheet) rather than declaring these variables itself.
|
|
8
|
+
*
|
|
9
|
+
* Consumed by Tailwind's CSS-first config (`@theme inline`, v4): this file does NOT need its
|
|
10
|
+
* own `@import 'tailwindcss';` — it is pulled into the application's stylesheet, which already
|
|
11
|
+
* has that import, and Tailwind processes `@theme` directives anywhere in the resulting CSS
|
|
12
|
+
* import graph. Layout breakpoints (--breakpoint-nav/panel/list) are an application-layout
|
|
13
|
+
* concern (sidebar/bottom-nav and list-view switching, both under packages/web/app) and stay in
|
|
14
|
+
* packages/web/globals.css, not here.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/* ── Raw palette: separate for each theme (ordinary cascading variables) ───── */
|
|
18
|
+
/* Default = dark. The 'dark' choice has no own block; it falls back to these values. */
|
|
19
|
+
:root {
|
|
20
|
+
--bg: #0c0e13;
|
|
21
|
+
--surface: #13161e;
|
|
22
|
+
--elevated: #1a1e28;
|
|
23
|
+
--border: #242836;
|
|
24
|
+
--border2: #2e3444;
|
|
25
|
+
--text: #e8eaf0;
|
|
26
|
+
--muted: #7b859a;
|
|
27
|
+
--accent: #8689e6;
|
|
28
|
+
--accent2: #6f72d8;
|
|
29
|
+
--on-accent: #0c0e13;
|
|
30
|
+
--danger: #ff6b6b;
|
|
31
|
+
--on-danger: #0c0e13;
|
|
32
|
+
--success: #4ade80;
|
|
33
|
+
--warning: #fbbf24;
|
|
34
|
+
--shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Light — applied by explicit choice OR auto when the OS is light. */
|
|
38
|
+
:root[data-theme='light'] {
|
|
39
|
+
--bg: #f7f8fa;
|
|
40
|
+
--surface: #ffffff;
|
|
41
|
+
--elevated: #f0f2f6;
|
|
42
|
+
--border: #e2e5ea;
|
|
43
|
+
--border2: #d3d7df;
|
|
44
|
+
--text: #1a1d24;
|
|
45
|
+
--muted: #687083;
|
|
46
|
+
--accent: #4f46e5;
|
|
47
|
+
--accent2: #4338ca;
|
|
48
|
+
--on-accent: #ffffff;
|
|
49
|
+
--danger: #d92d20;
|
|
50
|
+
--on-danger: #ffffff;
|
|
51
|
+
--success: #15803d;
|
|
52
|
+
--warning: #b45309;
|
|
53
|
+
--shadow: 0 8px 24px rgba(40, 50, 80, 0.12);
|
|
54
|
+
}
|
|
55
|
+
/* Duplicates :root[data-theme='light']; keep in sync (a media query cannot be grouped with a plain selector). */
|
|
56
|
+
@media (prefers-color-scheme: light) {
|
|
57
|
+
:root:not([data-theme]) {
|
|
58
|
+
--bg: #f7f8fa;
|
|
59
|
+
--surface: #ffffff;
|
|
60
|
+
--elevated: #f0f2f6;
|
|
61
|
+
--border: #e2e5ea;
|
|
62
|
+
--border2: #d3d7df;
|
|
63
|
+
--text: #1a1d24;
|
|
64
|
+
--muted: #687083;
|
|
65
|
+
--accent: #4f46e5;
|
|
66
|
+
--accent2: #4338ca;
|
|
67
|
+
--on-accent: #ffffff;
|
|
68
|
+
--danger: #d92d20;
|
|
69
|
+
--on-danger: #ffffff;
|
|
70
|
+
--success: #15803d;
|
|
71
|
+
--warning: #b45309;
|
|
72
|
+
--shadow: 0 8px 24px rgba(40, 50, 80, 0.12);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* E-ink — high contrast for color e-readers (Kaleido and similar).
|
|
77
|
+
White bg + black text = maximum contrast. Accent/semantic colors are saturated DARK
|
|
78
|
+
colors (readable on a moiré-prone pale color film). Border/muted remain neutral.
|
|
79
|
+
COLORS ONLY; geometry does NOT change. Shadows are disabled through --shadow. */
|
|
80
|
+
:root[data-theme='eink'] {
|
|
81
|
+
--bg: #ffffff;
|
|
82
|
+
--surface: #ffffff;
|
|
83
|
+
--elevated: #f2f2f2;
|
|
84
|
+
--border: #000000;
|
|
85
|
+
--border2: #000000;
|
|
86
|
+
--text: #000000;
|
|
87
|
+
--muted: #3a3a3a;
|
|
88
|
+
--accent: #0d3bb0;
|
|
89
|
+
--accent2: #082a85;
|
|
90
|
+
--on-accent: #ffffff;
|
|
91
|
+
--danger: #b80016;
|
|
92
|
+
--on-danger: #ffffff;
|
|
93
|
+
--success: #0a6e1d;
|
|
94
|
+
--warning: #9a5200;
|
|
95
|
+
--shadow: none;
|
|
96
|
+
/* Eink: dark+saturated, maximum separation under color film (Kaleido).
|
|
97
|
+
Color only on chip text/border; the background remains white (e-ink rule). */
|
|
98
|
+
--cat-1: #b80016;
|
|
99
|
+
--cat-2: #9a5200;
|
|
100
|
+
--cat-3: #6e5b00;
|
|
101
|
+
--cat-4: #0a6e1d;
|
|
102
|
+
--cat-5: #006d6d;
|
|
103
|
+
--cat-6: #0d3bb0;
|
|
104
|
+
--cat-7: #5b1aa6;
|
|
105
|
+
--cat-8: #a80060;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* E-ink: category chip color (--cat is set by catColor() on the element).
|
|
109
|
+
E-ink ONLY — ordinary themes keep the default chip appearance (neutral border
|
|
110
|
+
+ dark text, like dates). Do not change the background (white). */
|
|
111
|
+
:root[data-theme='eink'] .cat-chip {
|
|
112
|
+
color: var(--cat);
|
|
113
|
+
border-color: var(--cat);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* E-ink: sticky chrome is solid, without transparency/blur. */
|
|
117
|
+
:root[data-theme='eink'] .eink-solid {
|
|
118
|
+
background-color: var(--bg);
|
|
119
|
+
backdrop-filter: none;
|
|
120
|
+
-webkit-backdrop-filter: none;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* E-ink: translucent accent tints (bg-accent/10·/15) read poorly under
|
|
124
|
+
color film (Kaleido); accent text on a pale accent background creates moiré.
|
|
125
|
+
E-ink rule: solid neutral background, black text. Tint → elevated gray;
|
|
126
|
+
force inner text to black (accent remains for text/icons on white). */
|
|
127
|
+
:root[data-theme='eink'] .bg-accent\/10,
|
|
128
|
+
:root[data-theme='eink'] .bg-accent\/15 {
|
|
129
|
+
background-color: var(--elevated) !important;
|
|
130
|
+
color: var(--text) !important;
|
|
131
|
+
}
|
|
132
|
+
:root[data-theme='eink'] .bg-accent\/10.text-accent,
|
|
133
|
+
:root[data-theme='eink'] .bg-accent\/15.text-accent,
|
|
134
|
+
:root[data-theme='eink'] .bg-accent\/10 .text-accent,
|
|
135
|
+
:root[data-theme='eink'] .bg-accent\/15 .text-accent {
|
|
136
|
+
color: var(--text) !important;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* ── Tailwind semantic tokens → raw palette ──
|
|
140
|
+
inline: utilities (.bg-bg, etc.) compile to var(--bg), so overriding
|
|
141
|
+
raw variables under [data-theme] rethemes the UI without changing classes. */
|
|
142
|
+
@theme inline {
|
|
143
|
+
--color-bg: var(--bg);
|
|
144
|
+
--color-surface: var(--surface);
|
|
145
|
+
--color-elevated: var(--elevated);
|
|
146
|
+
--color-border: var(--border);
|
|
147
|
+
--color-border2: var(--border2);
|
|
148
|
+
--color-text: var(--text);
|
|
149
|
+
--color-muted: var(--muted);
|
|
150
|
+
--color-accent: var(--accent);
|
|
151
|
+
--color-accent2: var(--accent2);
|
|
152
|
+
--color-danger: var(--danger);
|
|
153
|
+
--color-success: var(--success);
|
|
154
|
+
--color-warning: var(--warning);
|
|
155
|
+
|
|
156
|
+
/* shadcn semantic tokens → our palette */
|
|
157
|
+
--color-background: var(--bg);
|
|
158
|
+
--color-foreground: var(--text);
|
|
159
|
+
--color-card: var(--surface);
|
|
160
|
+
--color-card-foreground: var(--text);
|
|
161
|
+
--color-popover: var(--surface);
|
|
162
|
+
--color-popover-foreground: var(--text);
|
|
163
|
+
--color-primary: var(--accent);
|
|
164
|
+
--color-primary-foreground: var(--on-accent);
|
|
165
|
+
--color-secondary: var(--elevated);
|
|
166
|
+
--color-secondary-foreground: var(--text);
|
|
167
|
+
--color-muted-foreground: var(--muted);
|
|
168
|
+
--color-accent-foreground: var(--on-accent);
|
|
169
|
+
--color-destructive: var(--danger);
|
|
170
|
+
--color-destructive-foreground: var(--on-danger);
|
|
171
|
+
--color-input: var(--border);
|
|
172
|
+
--color-ring: var(--accent);
|
|
173
|
+
|
|
174
|
+
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', sans-serif;
|
|
175
|
+
--radius-sm: 6px;
|
|
176
|
+
--radius-md: 8px;
|
|
177
|
+
--radius-lg: 12px;
|
|
178
|
+
--radius-xl: 16px;
|
|
179
|
+
--radius-full: 9999px;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* ── E-ink: disable motion and shadows (does not affect geometry) ────────── */
|
|
183
|
+
:root[data-theme='eink'] *,
|
|
184
|
+
:root[data-theme='eink'] *::before,
|
|
185
|
+
:root[data-theme='eink'] *::after {
|
|
186
|
+
transition: none !important;
|
|
187
|
+
animation: none !important;
|
|
188
|
+
box-shadow: none !important;
|
|
189
|
+
}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { FC, ReactNode } from 'react';
|
|
2
|
+
import type { FieldMeta, LayoutEl, OptionItem } from '@coffer-org/sdk/fields';
|
|
3
|
+
export type TFn = (key: string, opts?: Record<string, unknown>) => string;
|
|
4
|
+
export type TemplateProps<D = unknown> = {
|
|
5
|
+
data: D;
|
|
6
|
+
t: TFn;
|
|
7
|
+
};
|
|
8
|
+
export type TemplateImporter<D = any> = () => Promise<{
|
|
9
|
+
default: import('react').FC<TemplateProps<D>>;
|
|
10
|
+
}>;
|
|
11
|
+
export type FieldMode = 'view' | 'edit' | 'create';
|
|
12
|
+
export interface RecordViewProps {
|
|
13
|
+
record: Record<string, unknown>;
|
|
14
|
+
onEdit?: () => void;
|
|
15
|
+
}
|
|
16
|
+
export interface RecordCtx {
|
|
17
|
+
library: string;
|
|
18
|
+
shelf: string;
|
|
19
|
+
recordId: string | null;
|
|
20
|
+
}
|
|
21
|
+
export interface ElementRenderProps {
|
|
22
|
+
el?: LayoutEl;
|
|
23
|
+
field?: FieldMeta;
|
|
24
|
+
fieldKey?: string;
|
|
25
|
+
value: unknown;
|
|
26
|
+
label?: string;
|
|
27
|
+
required?: boolean;
|
|
28
|
+
error?: string;
|
|
29
|
+
selectOptions?: OptionItem[];
|
|
30
|
+
excludeValues?: string[];
|
|
31
|
+
mode: FieldMode;
|
|
32
|
+
recordCtx: RecordCtx;
|
|
33
|
+
bare?: boolean;
|
|
34
|
+
children?: ReactNode;
|
|
35
|
+
}
|
|
36
|
+
export interface FieldRenderProps extends ElementRenderProps {
|
|
37
|
+
field: FieldMeta;
|
|
38
|
+
}
|
|
39
|
+
export interface FieldInlineProps {
|
|
40
|
+
field: FieldMeta;
|
|
41
|
+
value: unknown;
|
|
42
|
+
height?: number;
|
|
43
|
+
}
|
|
44
|
+
export interface FieldValueProps {
|
|
45
|
+
field: FieldMeta;
|
|
46
|
+
value: unknown;
|
|
47
|
+
el?: LayoutEl;
|
|
48
|
+
}
|
|
49
|
+
export type PickerSize = 'small' | 'large' | 'modal';
|
|
50
|
+
export type EditorMode = 'popover' | 'modal' | 'inplace' | 'custom';
|
|
51
|
+
export interface FieldPickerProps {
|
|
52
|
+
field: FieldMeta;
|
|
53
|
+
draft: unknown;
|
|
54
|
+
setDraft: (v: unknown) => void;
|
|
55
|
+
options?: OptionItem[];
|
|
56
|
+
save: (v?: unknown) => void;
|
|
57
|
+
cancel: () => void;
|
|
58
|
+
remove?: () => void;
|
|
59
|
+
removeLabel?: string;
|
|
60
|
+
}
|
|
61
|
+
export type BoxGeom = 'inline' | 'textarea' | 'title' | 'none';
|
|
62
|
+
export interface FieldKey {
|
|
63
|
+
value: string;
|
|
64
|
+
rawValue: unknown;
|
|
65
|
+
label: string;
|
|
66
|
+
sort?: string;
|
|
67
|
+
}
|
|
68
|
+
export interface FieldKeyCtx {
|
|
69
|
+
t: TFn;
|
|
70
|
+
labelMap?: Map<string, string>;
|
|
71
|
+
}
|
|
72
|
+
export interface FieldRenderer {
|
|
73
|
+
kinds: string[];
|
|
74
|
+
layout?: 'block' | 'scalar' | ((field: FieldMeta) => 'block' | 'scalar');
|
|
75
|
+
childWidth?: string;
|
|
76
|
+
box?: BoxGeom;
|
|
77
|
+
Page: FC<ElementRenderProps>;
|
|
78
|
+
Inline?: FC<FieldInlineProps>;
|
|
79
|
+
Value?: FC<FieldValueProps>;
|
|
80
|
+
pickerSize?: PickerSize | ((field: FieldMeta) => PickerSize);
|
|
81
|
+
Picker?: FC<FieldPickerProps>;
|
|
82
|
+
editor?: EditorMode;
|
|
83
|
+
keys?: (value: unknown, field: FieldMeta, ctx: FieldKeyCtx) => FieldKey[];
|
|
84
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@coffer-org/web-ui",
|
|
3
|
+
"version": "4.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"engines": {
|
|
6
|
+
"node": ">=24"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./*": {
|
|
17
|
+
"types": "./dist/*.d.ts",
|
|
18
|
+
"default": "./dist/*.js"
|
|
19
|
+
},
|
|
20
|
+
"./theme.css": "./dist/theme.css"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc -b tsconfig.build.json && cp src/theme.css dist/theme.css",
|
|
24
|
+
"prepack": "npm run build && node ../../scripts/swap-exports.mjs dist",
|
|
25
|
+
"postpack": "node ../../scripts/swap-exports.mjs src"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@coffer-org/sdk": "^4.0.0",
|
|
29
|
+
"@ark-ui/react": "^5.37.2",
|
|
30
|
+
"@base-ui/react": "^1.5.0",
|
|
31
|
+
"@icons-pack/react-simple-icons": "^13.13.0",
|
|
32
|
+
"@radix-ui/react-checkbox": "^1.3.4",
|
|
33
|
+
"@radix-ui/react-dialog": "^1.1.16",
|
|
34
|
+
"@radix-ui/react-direction": "^1.1.2",
|
|
35
|
+
"@radix-ui/react-dropdown-menu": "^2.1.17",
|
|
36
|
+
"@radix-ui/react-label": "^2.1.9",
|
|
37
|
+
"@radix-ui/react-popover": "^1.1.16",
|
|
38
|
+
"@radix-ui/react-scroll-area": "^1.2.11",
|
|
39
|
+
"@radix-ui/react-select": "^2.3.0",
|
|
40
|
+
"@radix-ui/react-separator": "^1.1.9",
|
|
41
|
+
"@radix-ui/react-slot": "^1.2.5",
|
|
42
|
+
"@radix-ui/react-switch": "^1.3.0",
|
|
43
|
+
"@tabler/icons-react": "^3.44.0",
|
|
44
|
+
"@tiptap/core": "^3.30.1",
|
|
45
|
+
"@tiptap/extension-image": "^3.30.1",
|
|
46
|
+
"@tiptap/extension-list": "^3.30.1",
|
|
47
|
+
"@tiptap/extension-table": "^3.30.1",
|
|
48
|
+
"@tiptap/extensions": "^3.30.1",
|
|
49
|
+
"@tiptap/pm": "^3.30.1",
|
|
50
|
+
"@tiptap/react": "^3.30.1",
|
|
51
|
+
"@tiptap/starter-kit": "^3.30.1",
|
|
52
|
+
"@tiptap/suggestion": "^3.30.1",
|
|
53
|
+
"@uiw/react-json-view": "^2.0.0-alpha.43",
|
|
54
|
+
"@uiw/react-textarea-code-editor": "^3.1.1",
|
|
55
|
+
"class-variance-authority": "^0.7.1",
|
|
56
|
+
"clsx": "^2.1.1",
|
|
57
|
+
"date-fns": "^4.4.0",
|
|
58
|
+
"dompurify": "^3.2.5",
|
|
59
|
+
"flag-icons": "^7.5.0",
|
|
60
|
+
"lucide-react": "^1.17.0",
|
|
61
|
+
"marked": "^15.0.0",
|
|
62
|
+
"micromark": "^4.0.2",
|
|
63
|
+
"micromark-extension-gfm": "^3.0.0",
|
|
64
|
+
"react-colorful": "^5.7.0",
|
|
65
|
+
"react-day-picker": "^10.0.1",
|
|
66
|
+
"react-number-format": "^5.4.5",
|
|
67
|
+
"react-phone-number-input": "^3.4.17",
|
|
68
|
+
"tailwind-merge": "^3.6.0",
|
|
69
|
+
"tiptap-markdown": "^0.9.0"
|
|
70
|
+
},
|
|
71
|
+
"peerDependencies": {
|
|
72
|
+
"react": ">=19",
|
|
73
|
+
"react-dom": ">=19",
|
|
74
|
+
"i18next": ">=23",
|
|
75
|
+
"react-i18next": ">=17",
|
|
76
|
+
"react-router-dom": ">=7",
|
|
77
|
+
"sonner": ">=2"
|
|
78
|
+
},
|
|
79
|
+
"devDependencies": {
|
|
80
|
+
"zod": "^4.4.3"
|
|
81
|
+
},
|
|
82
|
+
"coffer": {
|
|
83
|
+
"runtime": "browser"
|
|
84
|
+
}
|
|
85
|
+
}
|