@vielzeug/refine 2.3.0 → 3.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 +5 -18
- package/dist/accordion-item.cjs +1 -1
- package/dist/accordion-item.cjs.map +1 -1
- package/dist/accordion-item.js +1 -1
- package/dist/accordion-item.js.map +1 -1
- package/dist/accordion.cjs.map +1 -1
- package/dist/accordion.js.map +1 -1
- package/dist/async.cjs +1 -1
- package/dist/async.cjs.map +1 -1
- package/dist/async.js +3 -3
- package/dist/async.js.map +1 -1
- package/dist/box.cjs.map +1 -1
- package/dist/box.js.map +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.cjs.map +1 -1
- package/dist/card.js +3 -3
- package/dist/card.js.map +1 -1
- package/dist/chat-message.cjs +1 -1
- package/dist/chat-message.cjs.map +1 -1
- package/dist/chat-message.js +1 -1
- package/dist/chat-message.js.map +1 -1
- package/dist/checkbox-group.cjs +1 -1
- package/dist/checkbox-group.cjs.map +1 -1
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.js.map +1 -1
- package/dist/combobox.cjs +10 -8
- package/dist/combobox.cjs.map +1 -1
- package/dist/combobox.js +62 -51
- package/dist/combobox.js.map +1 -1
- package/dist/command-palette.cjs +1 -1
- package/dist/command-palette.cjs.map +1 -1
- package/dist/command-palette.js +6 -2
- package/dist/command-palette.js.map +1 -1
- package/dist/content/card/card.css.cjs +1 -1
- package/dist/content/card/card.css.cjs.map +1 -1
- package/dist/content/card/card.css.js +1 -1
- package/dist/content/card/card.css.js.map +1 -1
- package/dist/content/card/card.d.ts +2 -2
- package/dist/content/card/card.d.ts.map +1 -1
- package/dist/content/index.d.ts +2 -0
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/list/list-item.css.cjs +1 -1
- package/dist/content/list/list-item.css.cjs.map +1 -1
- package/dist/content/list/list-item.css.js +1 -1
- package/dist/content/list/list-item.css.js.map +1 -1
- package/dist/content/list/list-item.d.ts +9 -0
- package/dist/content/list/list-item.d.ts.map +1 -1
- package/dist/content/pagination/pagination.css.cjs +1 -1
- package/dist/content/pagination/pagination.css.cjs.map +1 -1
- package/dist/content/pagination/pagination.css.js +1 -1
- package/dist/content/pagination/pagination.css.js.map +1 -1
- package/dist/content/stats/stats.css.cjs +2 -0
- package/dist/content/stats/stats.css.cjs.map +1 -0
- package/dist/content/stats/stats.css.js +6 -0
- package/dist/content/stats/stats.css.js.map +1 -0
- package/dist/content/stats/stats.d.ts +72 -0
- package/dist/content/stats/stats.d.ts.map +1 -0
- package/dist/core/auto-resize.cjs +1 -1
- package/dist/core/auto-resize.cjs.map +1 -1
- package/dist/core/auto-resize.js +1 -1
- package/dist/core/auto-resize.js.map +1 -1
- package/dist/core/field-base.cjs +1 -1
- package/dist/core/field-base.cjs.map +1 -1
- package/dist/core/field-base.d.ts +1 -1
- package/dist/core/field-base.js +1 -1
- package/dist/core/field-base.js.map +1 -1
- package/dist/core/nav.cjs +1 -1
- package/dist/core/nav.cjs.map +1 -1
- package/dist/core/nav.d.ts +4 -1
- package/dist/core/nav.d.ts.map +1 -1
- package/dist/core/nav.js +41 -28
- package/dist/core/nav.js.map +1 -1
- package/dist/core/option-list.cjs +1 -1
- package/dist/core/option-list.cjs.map +1 -1
- package/dist/core/option-list.d.ts.map +1 -1
- package/dist/core/option-list.js +30 -28
- package/dist/core/option-list.js.map +1 -1
- package/dist/core/slider.cjs +1 -1
- package/dist/core/slider.cjs.map +1 -1
- package/dist/core/slider.js +1 -1
- package/dist/core/slider.js.map +1 -1
- package/dist/core/spinner.cjs +1 -1
- package/dist/core/spinner.cjs.map +1 -1
- package/dist/core/spinner.js +1 -1
- package/dist/core/spinner.js.map +1 -1
- package/dist/custom-elements.json +5471 -4977
- package/dist/datagrid.cjs +219 -199
- package/dist/datagrid.cjs.map +1 -1
- package/dist/datagrid.js +415 -302
- package/dist/datagrid.js.map +1 -1
- package/dist/disclosure/accordion/accordion.css.cjs +1 -1
- package/dist/disclosure/accordion/accordion.css.cjs.map +1 -1
- package/dist/disclosure/accordion/accordion.css.js +1 -1
- package/dist/disclosure/accordion/accordion.css.js.map +1 -1
- package/dist/disclosure/accordion/accordion.d.ts +5 -5
- package/dist/disclosure/accordion/accordion.d.ts.map +1 -1
- package/dist/disclosure/accordion-item/accordion-item.css.cjs +1 -1
- package/dist/disclosure/accordion-item/accordion-item.css.cjs.map +1 -1
- package/dist/disclosure/accordion-item/accordion-item.css.js +1 -1
- package/dist/disclosure/accordion-item/accordion-item.css.js.map +1 -1
- package/dist/disclosure/accordion-item/accordion-item.d.ts +3 -3
- package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -1
- package/dist/disclosure/tab-item/tab-item.css.cjs +1 -1
- package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -1
- package/dist/disclosure/tab-item/tab-item.css.js +1 -1
- package/dist/disclosure/tab-item/tab-item.css.js.map +1 -1
- package/dist/disclosure/tab-item/tab-item.d.ts +6 -3
- package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -1
- package/dist/disclosure/tabs/tabs.css.cjs +1 -1
- package/dist/disclosure/tabs/tabs.css.cjs.map +1 -1
- package/dist/disclosure/tabs/tabs.css.js +1 -1
- package/dist/disclosure/tabs/tabs.css.js.map +1 -1
- package/dist/disclosure/tabs/tabs.d.ts +9 -5
- package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
- package/dist/drawer.cjs +1 -1
- package/dist/drawer.cjs.map +1 -1
- package/dist/drawer.js +1 -1
- package/dist/drawer.js.map +1 -1
- package/dist/feedback/toast/toast.d.ts.map +1 -1
- package/dist/file-input.cjs +1 -1
- package/dist/file-input.cjs.map +1 -1
- package/dist/file-input.js +2 -2
- package/dist/file-input.js.map +1 -1
- package/dist/frameworks/elements.d.ts +4 -85
- package/dist/frameworks/react.d.ts +5 -4
- package/dist/frameworks/vue.d.ts +4 -4
- package/dist/grid.cjs +2 -2
- package/dist/grid.cjs.map +1 -1
- package/dist/grid.js +21 -18
- package/dist/grid.js.map +1 -1
- package/dist/icon.cjs +1 -1
- package/dist/icon.cjs.map +1 -1
- package/dist/icon.js +1 -1
- package/dist/icon.js.map +1 -1
- package/dist/input.cjs +5 -4
- package/dist/input.cjs.map +1 -1
- package/dist/input.js +14 -8
- package/dist/input.js.map +1 -1
- package/dist/inputs/combobox/combobox-options.cjs +1 -1
- package/dist/inputs/combobox/combobox-options.cjs.map +1 -1
- package/dist/inputs/combobox/combobox-options.d.ts.map +1 -1
- package/dist/inputs/combobox/combobox-options.js +1 -0
- package/dist/inputs/combobox/combobox-options.js.map +1 -1
- package/dist/inputs/combobox/combobox.css.cjs +1 -1
- package/dist/inputs/combobox/combobox.css.cjs.map +1 -1
- package/dist/inputs/combobox/combobox.css.js +1 -1
- package/dist/inputs/combobox/combobox.css.js.map +1 -1
- package/dist/inputs/combobox/combobox.d.ts +13 -1
- package/dist/inputs/combobox/combobox.d.ts.map +1 -1
- package/dist/inputs/combobox/combobox.types.d.ts +7 -0
- package/dist/inputs/combobox/combobox.types.d.ts.map +1 -1
- package/dist/inputs/datagrid/datagrid-model.cjs +1 -1
- package/dist/inputs/datagrid/datagrid-model.cjs.map +1 -1
- package/dist/inputs/datagrid/datagrid-model.d.ts +17 -3
- package/dist/inputs/datagrid/datagrid-model.d.ts.map +1 -1
- package/dist/inputs/datagrid/datagrid-model.js +93 -70
- package/dist/inputs/datagrid/datagrid-model.js.map +1 -1
- package/dist/inputs/datagrid/datagrid.css.cjs +1 -1
- package/dist/inputs/datagrid/datagrid.css.cjs.map +1 -1
- package/dist/inputs/datagrid/datagrid.css.js +1 -1
- package/dist/inputs/datagrid/datagrid.css.js.map +1 -1
- package/dist/inputs/datagrid/datagrid.d.ts +78 -36
- package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
- package/dist/inputs/file-input/file-input-upload.cjs +1 -1
- package/dist/inputs/file-input/file-input-upload.cjs.map +1 -1
- package/dist/inputs/file-input/file-input-upload.js +1 -1
- package/dist/inputs/file-input/file-input-upload.js.map +1 -1
- package/dist/inputs/index.d.ts +3 -4
- package/dist/inputs/index.d.ts.map +1 -1
- package/dist/inputs/input/input.css.cjs +1 -1
- package/dist/inputs/input/input.css.cjs.map +1 -1
- package/dist/inputs/input/input.css.js +1 -1
- package/dist/inputs/input/input.css.js.map +1 -1
- package/dist/inputs/input/input.d.ts +3 -0
- package/dist/inputs/input/input.d.ts.map +1 -1
- package/dist/inputs/select/select.css.cjs +1 -1
- package/dist/inputs/select/select.css.cjs.map +1 -1
- package/dist/inputs/select/select.css.js +1 -1
- package/dist/inputs/select/select.css.js.map +1 -1
- package/dist/inputs/select/select.d.ts +5 -0
- package/dist/inputs/select/select.d.ts.map +1 -1
- package/dist/inputs/shared/field-binding.cjs +1 -1
- package/dist/inputs/shared/field-binding.cjs.map +1 -1
- package/dist/inputs/shared/field-binding.js +6 -6
- package/dist/inputs/shared/field-binding.js.map +1 -1
- package/dist/layout/box/box.css.cjs +1 -1
- package/dist/layout/box/box.css.cjs.map +1 -1
- package/dist/layout/box/box.css.js +1 -1
- package/dist/layout/box/box.css.js.map +1 -1
- package/dist/layout/box/box.d.ts +3 -3
- package/dist/layout/box/box.d.ts.map +1 -1
- package/dist/layout/grid/grid.d.ts.map +1 -1
- package/dist/layout/navbar/navbar.css.cjs +1 -1
- package/dist/layout/navbar/navbar.css.cjs.map +1 -1
- package/dist/layout/navbar/navbar.css.js +1 -1
- package/dist/layout/navbar/navbar.css.js.map +1 -1
- package/dist/layout/navbar/navbar.d.ts +3 -1
- package/dist/layout/navbar/navbar.d.ts.map +1 -1
- package/dist/layout/sidebar/sidebar.css.cjs +1 -1
- package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
- package/dist/layout/sidebar/sidebar.css.js +1 -1
- package/dist/layout/sidebar/sidebar.css.js.map +1 -1
- package/dist/layout/sidebar/sidebar.d.ts +8 -0
- package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
- package/dist/list-item.cjs +6 -5
- package/dist/list-item.cjs.map +1 -1
- package/dist/list-item.js +23 -17
- package/dist/list-item.js.map +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.cjs.map +1 -1
- package/dist/list.js +1 -1
- package/dist/list.js.map +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.cjs.map +1 -1
- package/dist/menu.js +7 -7
- package/dist/menu.js.map +1 -1
- package/dist/navbar.cjs +2 -2
- package/dist/navbar.cjs.map +1 -1
- package/dist/navbar.js +91 -87
- package/dist/navbar.js.map +1 -1
- package/dist/navigation-menu.cjs +1 -1
- package/dist/navigation-menu.cjs.map +1 -1
- package/dist/navigation-menu.js +2 -2
- package/dist/navigation-menu.js.map +1 -1
- package/dist/number-input.cjs +1 -1
- package/dist/number-input.cjs.map +1 -1
- package/dist/number-input.js +1 -1
- package/dist/number-input.js.map +1 -1
- package/dist/overlay/popover/popover.css.cjs +1 -1
- package/dist/overlay/popover/popover.css.cjs.map +1 -1
- package/dist/overlay/popover/popover.css.js +1 -1
- package/dist/overlay/popover/popover.css.js.map +1 -1
- package/dist/overlay/popover/popover.d.ts +1 -0
- package/dist/overlay/popover/popover.d.ts.map +1 -1
- package/dist/overlay/shared/use-dialog.cjs +1 -1
- package/dist/overlay/shared/use-dialog.cjs.map +1 -1
- package/dist/overlay/shared/use-dialog.js +1 -1
- package/dist/overlay/shared/use-dialog.js.map +1 -1
- package/dist/overlay/shared/use-floating-trigger.cjs +1 -1
- package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -1
- package/dist/overlay/shared/use-floating-trigger.js +1 -1
- package/dist/overlay/shared/use-floating-trigger.js.map +1 -1
- package/dist/overlay/tooltip/tooltip.d.ts.map +1 -1
- package/dist/popover.cjs +1 -1
- package/dist/popover.cjs.map +1 -1
- package/dist/popover.js +6 -6
- package/dist/popover.js.map +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.cjs.map +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/radio.cjs +1 -1
- package/dist/radio.cjs.map +1 -1
- package/dist/radio.js +15 -13
- package/dist/radio.js.map +1 -1
- package/dist/rating.cjs +1 -1
- package/dist/rating.cjs.map +1 -1
- package/dist/rating.js +2 -2
- package/dist/rating.js.map +1 -1
- package/dist/refine.cjs +373 -324
- package/dist/refine.cjs.map +1 -1
- package/dist/refine.iife.js +382 -333
- package/dist/refine.iife.js.map +1 -1
- package/dist/refine.js +417 -368
- package/dist/refine.js.map +1 -1
- package/dist/select.cjs +16 -14
- package/dist/select.cjs.map +1 -1
- package/dist/select.js +118 -112
- package/dist/select.js.map +1 -1
- package/dist/shared/types.d.ts +0 -2
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/sidebar.cjs +28 -23
- package/dist/sidebar.cjs.map +1 -1
- package/dist/sidebar.js +143 -108
- package/dist/sidebar.js.map +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.cjs.map +1 -1
- package/dist/skeleton.js +11 -9
- package/dist/skeleton.js.map +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +21 -21
- package/dist/slider.js.map +1 -1
- package/dist/stats.cjs +18 -0
- package/dist/stats.cjs.map +1 -0
- package/dist/stats.js +88 -0
- package/dist/stats.js.map +1 -0
- package/dist/stepper.cjs +1 -1
- package/dist/stepper.cjs.map +1 -1
- package/dist/stepper.js +1 -1
- package/dist/stepper.js.map +1 -1
- package/dist/styles/mixins/animation.css.cjs +2 -0
- package/dist/styles/mixins/animation.css.cjs.map +1 -1
- package/dist/styles/mixins/animation.css.d.ts.map +1 -1
- package/dist/styles/mixins/animation.css.js +2 -0
- package/dist/styles/mixins/animation.css.js.map +1 -1
- package/dist/tab-item.cjs +1 -1
- package/dist/tab-item.cjs.map +1 -1
- package/dist/tab-item.js +3 -2
- package/dist/tab-item.js.map +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.cjs.map +1 -1
- package/dist/tabs.js +3 -1
- package/dist/tabs.js.map +1 -1
- package/dist/toast.cjs +8 -8
- package/dist/toast.cjs.map +1 -1
- package/dist/toast.js +32 -33
- package/dist/toast.js.map +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.js +2 -2
- package/dist/tooltip.js.map +1 -1
- package/dist/types/elements.d.ts +207 -0
- package/package.json +70 -62
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.css.js","names":[],"sources":["../../../src/content/card/card.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--card-bg, var(--color-canvas));\n --_color: var(--card-color, var(--color-contrast-900));\n --_border: var(--card-border, var(--border));\n --_border-color: var(--card-border-color, var(--color-divider));\n --_radius: var(--card-radius, var(--rounded-lg));\n --_padding: var(--card-padding, var(--size-4));\n --_shadow: var(--card-shadow, var(--shadow-sm));\n --_hover-shadow: var(--card-hover-shadow, var(--shadow-md));\n\n position: relative;\n display: flex;\n flex-direction: column;\n }\n\n .card {\n position: relative;\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n color: var(--_color);\n background: var(--_bg);\n border-radius: var(--_radius);\n backdrop-filter: blur(var(--blur-md));\n transition:\n box-shadow var(--transition-normal),\n transform var(--transition-normal),\n background var(--transition-normal),\n border-color var(--transition-normal);\n }\n\n /* ── Card Structure ───────────────────────── */\n\n .card-media {\n flex-shrink: 0;\n overflow: hidden;\n }\n\n .card-media img {\n display: block;\n width: 100%;\n height: auto;\n object-fit: cover;\n }\n\n .card-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .card-header,\n .card-content,\n .card-footer {\n padding: var(--_padding);\n }\n\n .card-header {\n padding-bottom: calc(var(--_padding) / 2);\n }\n\n .card-footer {\n padding-top: calc(var(--_padding) / 2);\n }\n\n .card-content {\n flex: 1;\n }\n\n .card-actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2);\n align-items: center;\n padding: var(--_padding);\n padding-top: calc(var(--_padding) / 2);\n }\n\n [hidden] {\n display: none;\n }\n}\n\n@layer refine.variants {\n /* Default — bordered card with shadow */\n :host(:not([variant], [color])) {\n --_shadow: var(--card-shadow, var(--shadow-sm));\n }\n\n :host(:not([variant], [color])) .card {\n border: var(--_border) solid var(--_border-color);\n box-shadow: var(--_shadow);\n }\n\n /* Default + color — tinted backdrop */\n :host(:not([variant])[color]) {\n --_bg: var(--card-bg, var(--_theme-backdrop));\n --_border-color: var(--card-border-color, var(--_theme-border));\n }\n\n :host(:not([variant])[color]) .card {\n border: var(--_border) solid var(--_border-color);\n }\n\n :host(:not([variant])[color]:hover) {\n --_bg: var(--card-bg, color-mix(in oklch, var(--_theme-base) 16%, var(--color-contrast-50)));\n --_border-color: var(--card-border-color, var(--_theme-focus));\n }\n\n /* Solid — fully filled with theme color */\n :host([variant='solid']) {\n --_bg: var(--card-bg, var(--_theme-base));\n --_color: var(--card-color, var(--_theme-contrast));\n --_border-color: var(--card-border-color, var(--_theme-base));\n --_shadow: var(--card-shadow, var(--shadow-sm));\n }\n\n :host([variant='solid']) .card {\n border: var(--_border) solid var(--_border-color);\n box-shadow: var(--_shadow);\n }\n\n /* Flat — tinted backdrop, subtle border */\n :host([variant='flat']) {\n --_border-color: var(--card-border-color, color-mix(in oklch, var(--_theme-border) 50%, transparent));\n }\n\n :host([variant='flat']) .card {\n border: var(--_border) solid var(--_border-color);\n }\n
|
|
1
|
+
{"version":3,"file":"card.css.js","names":[],"sources":["../../../src/content/card/card.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--card-bg, var(--color-canvas));\n --_color: var(--card-color, var(--color-contrast-900));\n --_border: var(--card-border, var(--border));\n --_border-color: var(--card-border-color, var(--color-divider));\n --_radius: var(--card-radius, var(--rounded-lg));\n --_padding: var(--card-padding, var(--size-4));\n --_shadow: var(--card-shadow, var(--shadow-sm));\n --_hover-shadow: var(--card-hover-shadow, var(--shadow-md));\n\n position: relative;\n display: flex;\n flex-direction: column;\n }\n\n .card {\n position: relative;\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n color: var(--_color);\n background: var(--_bg);\n border-radius: var(--_radius);\n backdrop-filter: blur(var(--blur-md));\n transition:\n box-shadow var(--transition-normal),\n transform var(--transition-normal),\n background var(--transition-normal),\n border-color var(--transition-normal);\n }\n\n /* ── Card Structure ───────────────────────── */\n\n .card-media {\n flex-shrink: 0;\n overflow: hidden;\n }\n\n .card-media img {\n display: block;\n width: 100%;\n height: auto;\n object-fit: cover;\n }\n\n .card-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .card-header,\n .card-content,\n .card-footer {\n padding: var(--_padding);\n }\n\n .card-header {\n padding-bottom: calc(var(--_padding) / 2);\n }\n\n .card-footer {\n padding-top: calc(var(--_padding) / 2);\n }\n\n .card-content {\n flex: 1;\n }\n\n .card-actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2);\n align-items: center;\n padding: var(--_padding);\n padding-top: calc(var(--_padding) / 2);\n }\n\n [hidden] {\n display: none;\n }\n}\n\n@layer refine.variants {\n /* Default — bordered card with shadow */\n :host(:not([variant], [color])) {\n --_shadow: var(--card-shadow, var(--shadow-sm));\n }\n\n :host(:not([variant], [color])) .card {\n border: var(--_border) solid var(--_border-color);\n box-shadow: var(--_shadow);\n }\n\n /* Default + color — tinted backdrop */\n :host(:not([variant])[color]) {\n --_bg: var(--card-bg, var(--_theme-backdrop));\n --_border-color: var(--card-border-color, var(--_theme-border));\n }\n\n :host(:not([variant])[color]) .card {\n border: var(--_border) solid var(--_border-color);\n }\n\n :host(:not([variant])[color]:hover) {\n --_bg: var(--card-bg, color-mix(in oklch, var(--_theme-base) 16%, var(--color-contrast-50)));\n --_border-color: var(--card-border-color, var(--_theme-focus));\n }\n\n /* Solid — fully filled with theme color */\n :host([variant='solid']) {\n --_bg: var(--card-bg, var(--_theme-base));\n --_color: var(--card-color, var(--_theme-contrast));\n --_border-color: var(--card-border-color, var(--_theme-base));\n --_shadow: var(--card-shadow, var(--shadow-sm));\n }\n\n :host([variant='solid']) .card {\n border: var(--_border) solid var(--_border-color);\n box-shadow: var(--_shadow);\n }\n\n /* Flat — tinted backdrop, subtle border */\n :host([variant='flat']) {\n --_border-color: var(--card-border-color, color-mix(in oklch, var(--_theme-border) 50%, transparent));\n }\n\n :host([variant='flat']) .card {\n border: var(--_border) solid var(--_border-color);\n }\n}\n\n@layer refine.overrides {\n /* ── Loading bar ──────────────────────────── */\n\n /* Bar lives inside .card which already has overflow:hidden,\n so translateX can sweep freely without any overflow. */\n .loading-bar {\n position: absolute;\n inset-inline-start: 0;\n top: 0;\n display: none;\n width: 65%;\n height: 3px;\n background: linear-gradient(90deg, transparent 0%, var(--_theme-base, var(--color-primary)) 50%, transparent 100%);\n }\n\n :host([loading]) .loading-bar {\n display: block;\n animation: var(--_motion-animation, loading-bar 1.4s linear infinite);\n }\n\n /* In RTL the loading bar sweeps right-to-left */\n :host(:dir(rtl)[loading]) .loading-bar {\n animation-direction: reverse;\n }\n\n /* ── Disabled ─────────────────────────────── */\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n :host([disabled][interactive]) .card {\n cursor: not-allowed;\n }\n\n /* ── Interactive hover/active ─────────────── */\n\n :host([interactive]:not([disabled]):hover) .card {\n box-shadow: var(--_hover-shadow);\n transform: translateY(-2px) scale(1.01);\n }\n\n :host([interactive]) .card {\n cursor: pointer;\n will-change: transform;\n }\n\n /* `:active` bubbles to every ancestor of whatever element is actually being pressed, so\n without the `:not(:has(...))` guard, pressing a nested interactive descendant (a swatch\n button, a slotted `<ore-button>`, a link, etc. — kept in sync with card.ts's\n `INTERACTIVE_DESCENDANT_SELECTOR`) would *also* visually \"press\" the whole card even though\n `handleClick` already ignores the click for activation purposes. `:host(:has(...))`\n (`:has()` as `:host()`'s functional argument) is invalid — `:host()` only accepts a compound\n selector and doesn't accept `:has()` inside it, so the bare `:host` pseudo-class chained\n directly with the rest (no parentheses around it) is used instead — same reasoning as\n list-item.css's identical `:host:has(...)` rules. */\n :host[interactive]:not([disabled]):active:not(\n :has(\n button:active,\n a[href]:active,\n input:active,\n select:active,\n textarea:active,\n summary:active,\n [role='button']:active,\n [role='link']:active\n )\n ) .card {\n box-shadow: var(--_shadow);\n transform: translateY(0) scale(0.99);\n transition:\n box-shadow var(--transition-fast),\n transform 120ms var(--ease-spring);\n }\n\n :host([interactive]:focus-visible) .card {\n outline: var(--border-2) solid var(--_theme-focus, var(--color-primary));\n outline-offset: var(--border-2);\n }\n\n /* ── Horizontal orientation ───────────────── */\n\n :host([orientation='horizontal']) .card {\n flex-direction: row;\n }\n\n :host([orientation='horizontal']) .card-media {\n width: 30%;\n min-width: 192px;\n max-width: 320px;\n }\n\n :host([orientation='horizontal']) .card-media img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n :host([orientation='horizontal']) .card-body {\n flex: 1;\n }\n}\n\n@keyframes loading-bar {\n 0% {\n transform: translateX(-100%);\n }\n\n 100% {\n transform: translateX(200%);\n }\n}\n"],"mappings":""}
|
|
@@ -22,14 +22,14 @@ export type OreCardProps = {
|
|
|
22
22
|
/** Internal padding size */
|
|
23
23
|
padding?: PaddingSize;
|
|
24
24
|
/** Visual style variant */
|
|
25
|
-
variant?: 'solid' | 'flat' | '
|
|
25
|
+
variant?: 'solid' | 'flat' | 'frost';
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
28
28
|
* A versatile card container with semantic slots for media, header, body, footer, and actions.
|
|
29
29
|
*
|
|
30
30
|
* @element ore-card
|
|
31
31
|
*
|
|
32
|
-
* @attr {string} variant - Visual variant: 'solid' | 'flat' | '
|
|
32
|
+
* @attr {string} variant - Visual variant: 'solid' | 'flat' | 'frost'
|
|
33
33
|
* @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'
|
|
34
34
|
* @attr {string} padding - Internal padding: 'none' | 'sm' | 'md' | 'lg' | 'xl'
|
|
35
35
|
* @attr {string} elevation - Shadow elevation: '0' | '1' | '2' | '3' | '4' | '5'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/content/card/card.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoB3E,gCAAgC;AAEhC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE;QAAE,aAAa,EAAE,UAAU,GAAG,aAAa,CAAC;QAAC,OAAO,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE,CAAC;CAC1F,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/content/card/card.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoB3E,gCAAgC;AAEhC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE;QAAE,aAAa,EAAE,UAAU,GAAG,aAAa,CAAC;QAAC,OAAO,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE,CAAC;CAC1F,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,QAAQ,EAAG,UAAmB,CAAC"}
|
package/dist/content/index.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ export type { OrePaginationEvents, OrePaginationProps } from './pagination/pagin
|
|
|
26
26
|
export { PAGINATION_TAG } from './pagination/pagination';
|
|
27
27
|
export type { OreSeparatorProps } from './separator/separator';
|
|
28
28
|
export { SEPARATOR_TAG } from './separator/separator';
|
|
29
|
+
export type { OreStatsProps, StatsTrendDirection, StatsVariant } from './stats/stats';
|
|
30
|
+
export { STATS_TAG } from './stats/stats';
|
|
29
31
|
export type { OreStepProps } from './stepper/step';
|
|
30
32
|
export { STEP_TAG } from './stepper/step';
|
|
31
33
|
export type { OreStepperEvents, OreStepperProps, StepperContext } from './stepper/stepper';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`@layer refine.base{:host{--_actions-width:var(--list-item-actions-width,var(--size-24));color:var(--color-contrast-700);display:block;position:relative;overflow:hidden}.row{z-index:1;box-sizing:border-box;gap:var(--_gap,var(--size-4));width:100%;min-height:var(--_min-height,var(--size-4));padding:var(--_padding,var(--size-2-5) var(--size-4));font-size:var(--_font-size,var(--text-sm));touch-action:pan-y;cursor:default;background:var(--list-item-bg,var(--color-canvas));transform:translateX(calc(var(--_swipe-x,0) * var(--_actions-width)));transition:var(--_motion-transition,transform var(--transition-fast), background var(--transition-fast));border:none;outline:none;align-items:center;display:flex;position:relative}.row:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left;padding-right:var(--_padding-inline-end,var(--size-6))}.row:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right;padding-left:var(--_padding-inline-end,var(--size-6))}.leading,.trailing{flex-shrink:0;align-items:center;display:flex}.content{gap:var(--size-0-5);flex-direction:column;flex:1;min-width:0;display:flex}.title{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.description{text-overflow:ellipsis;font-size:var(--text-xs);color:var(--color-contrast-
|
|
1
|
+
var e=`@layer refine.base{:host{--_actions-width:var(--list-item-actions-width,var(--size-24));color:var(--color-contrast-700);display:block;position:relative;overflow:hidden}.row{z-index:1;box-sizing:border-box;gap:var(--_gap,var(--size-4));width:100%;min-height:var(--_min-height,var(--size-4));padding:var(--_padding,var(--size-2-5) var(--size-4));font-size:var(--_font-size,var(--text-sm));touch-action:pan-y;cursor:default;background:var(--list-item-bg,var(--color-canvas));transform:translateX(calc(var(--_swipe-x,0) * var(--_actions-width)));transition:var(--_motion-transition,transform var(--transition-fast), background var(--transition-fast));border:none;outline:none;align-items:center;display:flex;position:relative}.row:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left;padding-right:var(--_padding-inline-end,var(--size-6))}.row:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right;padding-left:var(--_padding-inline-end,var(--size-6))}:host([data-two-line]) .row{min-height:var(--_min-height-two-line,var(--size-18))}:host([actionable]) .row{cursor:pointer}.leading,.trailing{flex-shrink:0;align-items:center;display:flex}.leading[hidden],.trailing[hidden]{display:none}.content{gap:var(--size-0-5);flex-direction:column;flex:1;min-width:0;display:flex}.title{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.description{text-overflow:ellipsis;font-size:var(--text-xs);color:var(--color-contrast-600);white-space:nowrap;display:block;overflow:hidden}.description:empty{display:none}.row:hover{background:var(--list-item-hover-bg,var(--color-contrast-100))}.row:focus-visible{outline:var(--focus-ring);outline-offset:-2px}:host([selected]) .row{color:var(--color-primary);background:var(--list-item-selected-bg,color-mix(in oklch, var(--color-primary) 10%, transparent))}:host([disabled]){pointer-events:none;opacity:.6}.actions{width:var(--_actions-width);transition:var(--_motion-transition,transform var(--transition-fast));align-items:stretch;display:flex;position:absolute;top:0;bottom:0}.actions ::slotted(*){flex:1;height:100%}.actions-left{transform:translateX(calc((var(--_swipe-x,0) - 1) * 100%));left:0}.actions-right{transform:translateX(calc((var(--_swipe-x,0) + 1) * 100%));right:0}:host([revealed=left]){--_swipe-x:1}:host([revealed=right]){--_swipe-x:-1}:host:has(.actions-left:focus-within){--_swipe-x:1}:host:has(.actions-right:focus-within){--_swipe-x:-1}:host([data-dragging]) .row,:host([data-dragging]) .actions-left,:host([data-dragging]) .actions-right{transition:none}:host([data-confirming]) .actions-left,:host([data-confirming]) .actions-right{filter:saturate(1.4)brightness(.94)}}`;exports.default=e;
|
|
2
2
|
//# sourceMappingURL=list-item.css.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-item.css.cjs","names":[],"sources":["../../../src/content/list/list-item.css?inline"],"sourcesContent":["@layer refine.base {\n /* `--_gap` / `--_padding` / `--_font-size` are intentionally not emitted by any mixin in this\n component's own `styles` array — they're inherited from the parent `ore-list`'s\n `sizeVariantMixin(LIST_SIZE_PRESET)` call the same way `ore-menu-item` inherits\n `--_gap`/`--_font-size` from `ore-menu` (see `LIST_SIZE_PRESET`'s doc comment). The\n `var(..., fallback)` defaults below cover standalone use outside an `ore-list`. */\n :host {\n --_actions-width: var(--list-item-actions-width, var(--size-24));\n position: relative;\n display: block;\n overflow: hidden;\n color: var(--color-contrast-700);\n }\n\n /* ========================================\n Row\n ======================================== */\n\n .row {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n display: flex;\n gap: var(--_gap, var(--size-4));\n align-items: center;\n width: 100%;\n min-height: var(--_min-height, var(--size-4));\n padding: var(--_padding, var(--size-2-5) var(--size-4));\n padding-inline-end: var(--_padding-inline-end, var(--size-6));\n font-size: var(--_font-size, var(--text-sm));\n text-align: start;\n touch-action: pan-y;\n cursor: default;\n outline: none;\n background: var(--list-item-bg, var(--color-canvas));\n border: none;\n transform: translateX(calc(var(--_swipe-x, 0) * var(--_actions-width)));\n transition: var(--_motion-transition, transform var(--transition-fast), background var(--transition-fast));\n }\n\n .leading,\n .trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--size-0-5);\n min-width: 0;\n }\n\n .title {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .description {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--color-contrast-
|
|
1
|
+
{"version":3,"file":"list-item.css.cjs","names":[],"sources":["../../../src/content/list/list-item.css?inline"],"sourcesContent":["@layer refine.base {\n /* `--_gap` / `--_padding` / `--_font-size` are intentionally not emitted by any mixin in this\n component's own `styles` array — they're inherited from the parent `ore-list`'s\n `sizeVariantMixin(LIST_SIZE_PRESET)` call the same way `ore-menu-item` inherits\n `--_gap`/`--_font-size` from `ore-menu` (see `LIST_SIZE_PRESET`'s doc comment). The\n `var(..., fallback)` defaults below cover standalone use outside an `ore-list`. */\n :host {\n --_actions-width: var(--list-item-actions-width, var(--size-24));\n position: relative;\n display: block;\n overflow: hidden;\n color: var(--color-contrast-700);\n }\n\n /* ========================================\n Row\n ======================================== */\n\n .row {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n display: flex;\n gap: var(--_gap, var(--size-4));\n align-items: center;\n width: 100%;\n min-height: var(--_min-height, var(--size-4));\n padding: var(--_padding, var(--size-2-5) var(--size-4));\n padding-inline-end: var(--_padding-inline-end, var(--size-6));\n font-size: var(--_font-size, var(--text-sm));\n text-align: start;\n touch-action: pan-y;\n cursor: default;\n outline: none;\n background: var(--list-item-bg, var(--color-canvas));\n border: none;\n transform: translateX(calc(var(--_swipe-x, 0) * var(--_actions-width)));\n transition: var(--_motion-transition, transform var(--transition-fast), background var(--transition-fast));\n }\n\n :host([data-two-line]) .row {\n min-height: var(--_min-height-two-line, var(--size-18));\n }\n\n :host([actionable]) .row {\n cursor: pointer;\n }\n\n .leading,\n .trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n }\n\n .leading[hidden],\n .trailing[hidden] {\n display: none;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--size-0-5);\n min-width: 0;\n }\n\n .title {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .description {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--color-contrast-600);\n white-space: nowrap;\n }\n\n .description:empty {\n display: none;\n }\n\n .row:hover {\n background: var(--list-item-hover-bg, var(--color-contrast-100));\n }\n\n .row:focus-visible {\n outline: var(--focus-ring);\n outline-offset: -2px;\n }\n\n /* ========================================\n Selected / Disabled States\n ======================================== */\n\n :host([selected]) .row {\n color: var(--color-primary);\n background: var(--list-item-selected-bg, color-mix(in oklch, var(--color-primary) 10%, transparent));\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Swipe Action Panels\n ======================================== */\n\n .actions {\n position: absolute;\n inset-block: 0;\n display: flex;\n align-items: stretch;\n width: var(--_actions-width);\n transition: var(--_motion-transition, transform var(--transition-fast));\n }\n\n /* A single slotted action button fills the whole revealed panel — the common case (one big\n tappable target, e.g. a full-height \"Delete\" button) rather than a small icon-sized hit area.\n This stretches the slotted element's own light-DOM box, which is enough for plain elements\n (a native <button>, an <a>, ...). It is NOT enough on its own for `ore-button`: its visible\n surface is an inner `[part=\"button\"]` with a fixed height from its size preset, independent\n of its own host box size — pass `fullheight` on the `ore-button` itself too (see its own\n `fullheight` prop) to actually fill this panel edge-to-edge. */\n .actions ::slotted(*) {\n flex: 1;\n height: 100%;\n }\n\n .actions-left {\n left: 0;\n transform: translateX(calc((var(--_swipe-x, 0) - 1) * 100%));\n }\n\n .actions-right {\n right: 0;\n transform: translateX(calc((var(--_swipe-x, 0) + 1) * 100%));\n }\n\n /* `:host(:has(...))` (`:has()` as `:host()`'s functional argument) is invalid — `:host()`\n only accepts a compound selector and doesn't accept `:has()` inside it. The plain `:host`\n pseudo-class chained directly with `:has()` (no parentheses) is the valid form. Kept as\n separate rules (not grouped via a comma with the `[revealed]` rules) so a selector list\n doesn't silently drop the whole rule if either half were ever invalid again. */\n :host([revealed='left']) {\n --_swipe-x: 1;\n }\n\n :host([revealed='right']) {\n --_swipe-x: -1;\n }\n\n :host:has(.actions-left:focus-within) {\n --_swipe-x: 1;\n }\n\n :host:has(.actions-right:focus-within) {\n --_swipe-x: -1;\n }\n\n /* Suppress the transition while a drag is actively updating `--_swipe-x` inline so the row\n and action panels track the pointer 1:1 instead of lagging behind on every move event. */\n :host([data-dragging]) .row,\n :host([data-dragging]) .actions-left,\n :host([data-dragging]) .actions-right {\n transition: none;\n }\n\n /* Feedback that the drag has passed into \"swipe all the way through\" territory (close to\n CONFIRM_THRESHOLD) — set by list-item.ts's onMove once past ~85% of that distance, cleared\n on release/cancel/commit. Visual-only; the confirm itself fires from JS regardless of CSS. */\n :host([data-confirming]) .actions-left,\n :host([data-confirming]) .actions-right {\n filter: saturate(1.4) brightness(0.94);\n }\n}\n"],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/content/list/list-item.css?inline
|
|
2
|
-
var e = "@layer refine.base{:host{--_actions-width:var(--list-item-actions-width,var(--size-24));color:var(--color-contrast-700);display:block;position:relative;overflow:hidden}.row{z-index:1;box-sizing:border-box;gap:var(--_gap,var(--size-4));width:100%;min-height:var(--_min-height,var(--size-4));padding:var(--_padding,var(--size-2-5) var(--size-4));font-size:var(--_font-size,var(--text-sm));touch-action:pan-y;cursor:default;background:var(--list-item-bg,var(--color-canvas));transform:translateX(calc(var(--_swipe-x,0) * var(--_actions-width)));transition:var(--_motion-transition,transform var(--transition-fast), background var(--transition-fast));border:none;outline:none;align-items:center;display:flex;position:relative}.row:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left;padding-right:var(--_padding-inline-end,var(--size-6))}.row:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right;padding-left:var(--_padding-inline-end,var(--size-6))}.leading,.trailing{flex-shrink:0;align-items:center;display:flex}.content{gap:var(--size-0-5);flex-direction:column;flex:1;min-width:0;display:flex}.title{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.description{text-overflow:ellipsis;font-size:var(--text-xs);color:var(--color-contrast-
|
|
2
|
+
var e = "@layer refine.base{:host{--_actions-width:var(--list-item-actions-width,var(--size-24));color:var(--color-contrast-700);display:block;position:relative;overflow:hidden}.row{z-index:1;box-sizing:border-box;gap:var(--_gap,var(--size-4));width:100%;min-height:var(--_min-height,var(--size-4));padding:var(--_padding,var(--size-2-5) var(--size-4));font-size:var(--_font-size,var(--text-sm));touch-action:pan-y;cursor:default;background:var(--list-item-bg,var(--color-canvas));transform:translateX(calc(var(--_swipe-x,0) * var(--_actions-width)));transition:var(--_motion-transition,transform var(--transition-fast), background var(--transition-fast));border:none;outline:none;align-items:center;display:flex;position:relative}.row:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left;padding-right:var(--_padding-inline-end,var(--size-6))}.row:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right;padding-left:var(--_padding-inline-end,var(--size-6))}:host([data-two-line]) .row{min-height:var(--_min-height-two-line,var(--size-18))}:host([actionable]) .row{cursor:pointer}.leading,.trailing{flex-shrink:0;align-items:center;display:flex}.leading[hidden],.trailing[hidden]{display:none}.content{gap:var(--size-0-5);flex-direction:column;flex:1;min-width:0;display:flex}.title{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.description{text-overflow:ellipsis;font-size:var(--text-xs);color:var(--color-contrast-600);white-space:nowrap;display:block;overflow:hidden}.description:empty{display:none}.row:hover{background:var(--list-item-hover-bg,var(--color-contrast-100))}.row:focus-visible{outline:var(--focus-ring);outline-offset:-2px}:host([selected]) .row{color:var(--color-primary);background:var(--list-item-selected-bg,color-mix(in oklch, var(--color-primary) 10%, transparent))}:host([disabled]){pointer-events:none;opacity:.6}.actions{width:var(--_actions-width);transition:var(--_motion-transition,transform var(--transition-fast));align-items:stretch;display:flex;position:absolute;top:0;bottom:0}.actions ::slotted(*){flex:1;height:100%}.actions-left{transform:translateX(calc((var(--_swipe-x,0) - 1) * 100%));left:0}.actions-right{transform:translateX(calc((var(--_swipe-x,0) + 1) * 100%));right:0}:host([revealed=left]){--_swipe-x:1}:host([revealed=right]){--_swipe-x:-1}:host:has(.actions-left:focus-within){--_swipe-x:1}:host:has(.actions-right:focus-within){--_swipe-x:-1}:host([data-dragging]) .row,:host([data-dragging]) .actions-left,:host([data-dragging]) .actions-right{transition:none}:host([data-confirming]) .actions-left,:host([data-confirming]) .actions-right{filter:saturate(1.4)brightness(.94)}}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-item.css.js","names":[],"sources":["../../../src/content/list/list-item.css?inline"],"sourcesContent":["@layer refine.base {\n /* `--_gap` / `--_padding` / `--_font-size` are intentionally not emitted by any mixin in this\n component's own `styles` array — they're inherited from the parent `ore-list`'s\n `sizeVariantMixin(LIST_SIZE_PRESET)` call the same way `ore-menu-item` inherits\n `--_gap`/`--_font-size` from `ore-menu` (see `LIST_SIZE_PRESET`'s doc comment). The\n `var(..., fallback)` defaults below cover standalone use outside an `ore-list`. */\n :host {\n --_actions-width: var(--list-item-actions-width, var(--size-24));\n position: relative;\n display: block;\n overflow: hidden;\n color: var(--color-contrast-700);\n }\n\n /* ========================================\n Row\n ======================================== */\n\n .row {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n display: flex;\n gap: var(--_gap, var(--size-4));\n align-items: center;\n width: 100%;\n min-height: var(--_min-height, var(--size-4));\n padding: var(--_padding, var(--size-2-5) var(--size-4));\n padding-inline-end: var(--_padding-inline-end, var(--size-6));\n font-size: var(--_font-size, var(--text-sm));\n text-align: start;\n touch-action: pan-y;\n cursor: default;\n outline: none;\n background: var(--list-item-bg, var(--color-canvas));\n border: none;\n transform: translateX(calc(var(--_swipe-x, 0) * var(--_actions-width)));\n transition: var(--_motion-transition, transform var(--transition-fast), background var(--transition-fast));\n }\n\n .leading,\n .trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--size-0-5);\n min-width: 0;\n }\n\n .title {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .description {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--color-contrast-
|
|
1
|
+
{"version":3,"file":"list-item.css.js","names":[],"sources":["../../../src/content/list/list-item.css?inline"],"sourcesContent":["@layer refine.base {\n /* `--_gap` / `--_padding` / `--_font-size` are intentionally not emitted by any mixin in this\n component's own `styles` array — they're inherited from the parent `ore-list`'s\n `sizeVariantMixin(LIST_SIZE_PRESET)` call the same way `ore-menu-item` inherits\n `--_gap`/`--_font-size` from `ore-menu` (see `LIST_SIZE_PRESET`'s doc comment). The\n `var(..., fallback)` defaults below cover standalone use outside an `ore-list`. */\n :host {\n --_actions-width: var(--list-item-actions-width, var(--size-24));\n position: relative;\n display: block;\n overflow: hidden;\n color: var(--color-contrast-700);\n }\n\n /* ========================================\n Row\n ======================================== */\n\n .row {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n display: flex;\n gap: var(--_gap, var(--size-4));\n align-items: center;\n width: 100%;\n min-height: var(--_min-height, var(--size-4));\n padding: var(--_padding, var(--size-2-5) var(--size-4));\n padding-inline-end: var(--_padding-inline-end, var(--size-6));\n font-size: var(--_font-size, var(--text-sm));\n text-align: start;\n touch-action: pan-y;\n cursor: default;\n outline: none;\n background: var(--list-item-bg, var(--color-canvas));\n border: none;\n transform: translateX(calc(var(--_swipe-x, 0) * var(--_actions-width)));\n transition: var(--_motion-transition, transform var(--transition-fast), background var(--transition-fast));\n }\n\n :host([data-two-line]) .row {\n min-height: var(--_min-height-two-line, var(--size-18));\n }\n\n :host([actionable]) .row {\n cursor: pointer;\n }\n\n .leading,\n .trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n }\n\n .leading[hidden],\n .trailing[hidden] {\n display: none;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--size-0-5);\n min-width: 0;\n }\n\n .title {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .description {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--color-contrast-600);\n white-space: nowrap;\n }\n\n .description:empty {\n display: none;\n }\n\n .row:hover {\n background: var(--list-item-hover-bg, var(--color-contrast-100));\n }\n\n .row:focus-visible {\n outline: var(--focus-ring);\n outline-offset: -2px;\n }\n\n /* ========================================\n Selected / Disabled States\n ======================================== */\n\n :host([selected]) .row {\n color: var(--color-primary);\n background: var(--list-item-selected-bg, color-mix(in oklch, var(--color-primary) 10%, transparent));\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Swipe Action Panels\n ======================================== */\n\n .actions {\n position: absolute;\n inset-block: 0;\n display: flex;\n align-items: stretch;\n width: var(--_actions-width);\n transition: var(--_motion-transition, transform var(--transition-fast));\n }\n\n /* A single slotted action button fills the whole revealed panel — the common case (one big\n tappable target, e.g. a full-height \"Delete\" button) rather than a small icon-sized hit area.\n This stretches the slotted element's own light-DOM box, which is enough for plain elements\n (a native <button>, an <a>, ...). It is NOT enough on its own for `ore-button`: its visible\n surface is an inner `[part=\"button\"]` with a fixed height from its size preset, independent\n of its own host box size — pass `fullheight` on the `ore-button` itself too (see its own\n `fullheight` prop) to actually fill this panel edge-to-edge. */\n .actions ::slotted(*) {\n flex: 1;\n height: 100%;\n }\n\n .actions-left {\n left: 0;\n transform: translateX(calc((var(--_swipe-x, 0) - 1) * 100%));\n }\n\n .actions-right {\n right: 0;\n transform: translateX(calc((var(--_swipe-x, 0) + 1) * 100%));\n }\n\n /* `:host(:has(...))` (`:has()` as `:host()`'s functional argument) is invalid — `:host()`\n only accepts a compound selector and doesn't accept `:has()` inside it. The plain `:host`\n pseudo-class chained directly with `:has()` (no parentheses) is the valid form. Kept as\n separate rules (not grouped via a comma with the `[revealed]` rules) so a selector list\n doesn't silently drop the whole rule if either half were ever invalid again. */\n :host([revealed='left']) {\n --_swipe-x: 1;\n }\n\n :host([revealed='right']) {\n --_swipe-x: -1;\n }\n\n :host:has(.actions-left:focus-within) {\n --_swipe-x: 1;\n }\n\n :host:has(.actions-right:focus-within) {\n --_swipe-x: -1;\n }\n\n /* Suppress the transition while a drag is actively updating `--_swipe-x` inline so the row\n and action panels track the pointer 1:1 instead of lagging behind on every move event. */\n :host([data-dragging]) .row,\n :host([data-dragging]) .actions-left,\n :host([data-dragging]) .actions-right {\n transition: none;\n }\n\n /* Feedback that the drag has passed into \"swipe all the way through\" territory (close to\n CONFIRM_THRESHOLD) — set by list-item.ts's onMove once past ~85% of that distance, cleared\n on release/cancel/commit. Visual-only; the confirm itself fires from JS regardless of CSS. */\n :host([data-confirming]) .actions-left,\n :host([data-confirming]) .actions-right {\n filter: saturate(1.4) brightness(0.94);\n }\n}\n"],"mappings":""}
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
export type ListItemRevealSide = 'left' | 'right';
|
|
3
3
|
/** Events emitted by the list-item component */
|
|
4
4
|
export type OreListItemEvents = {
|
|
5
|
+
/** Emitted when an actionable item is activated by pointer or keyboard. */
|
|
6
|
+
activate: {
|
|
7
|
+
item: HTMLElement;
|
|
8
|
+
value: null | string;
|
|
9
|
+
};
|
|
5
10
|
/** Emitted when the revealed action panel closes (gesture, tap, or programmatic). */
|
|
6
11
|
conceal: {
|
|
7
12
|
item: HTMLElement;
|
|
@@ -32,6 +37,8 @@ export type OreListItemEvents = {
|
|
|
32
37
|
};
|
|
33
38
|
/** List-item component properties */
|
|
34
39
|
export type OreListItemProps = {
|
|
40
|
+
/** Enable pointer and Enter/Space activation with button semantics. */
|
|
41
|
+
actionable?: boolean;
|
|
35
42
|
/** Disable this item — blocks pointer interaction, swipe actions, and selection */
|
|
36
43
|
disabled?: boolean;
|
|
37
44
|
/** Which action panel is revealed: 'left' | 'right' (absent = closed). Settable programmatically. */
|
|
@@ -63,11 +70,13 @@ export type OreListItemProps = {
|
|
|
63
70
|
*
|
|
64
71
|
* @element ore-list-item
|
|
65
72
|
*
|
|
73
|
+
* @attr {boolean} actionable - Enable pointer and Enter/Space activation with button semantics
|
|
66
74
|
* @attr {boolean} disabled - Disable this item
|
|
67
75
|
* @attr {boolean} selected - Read-only reflected attribute: `true` when this item's `value` matches the parent `ore-list`'s `value`. Not independently settable.
|
|
68
76
|
* @attr {string} value - Opaque value compared against the parent list's `value` to derive `selected`; also reported in select/change events
|
|
69
77
|
* @attr {string} revealed - Which action panel is revealed: 'left' | 'right'
|
|
70
78
|
*
|
|
79
|
+
* @fires activate - Actionable item is activated. detail: { item: HTMLElement, value: string | null }
|
|
71
80
|
* @fires select - Item becomes selected. detail: { item: HTMLElement, value: string | null }
|
|
72
81
|
* @fires deselect - Item becomes deselected. detail: { item: HTMLElement, value: string | null }
|
|
73
82
|
* @fires reveal - An action panel opens. detail: { item: HTMLElement, side: 'left' | 'right' }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-item.d.ts","sourceRoot":"","sources":["../../../src/content/list/list-item.ts"],"names":[],"mappings":"AAqBA,sEAAsE;AACtE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qFAAqF;IACrF,OAAO,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IAC/B;;;OAGG;IACH,OAAO,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACzD,gDAAgD;IAChD,QAAQ,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;IACtD,0DAA0D;IAC1D,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACxD,iGAAiG;IACjG,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;CACrD,CAAC;AAEF,qCAAqC;AACrC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF
|
|
1
|
+
{"version":3,"file":"list-item.d.ts","sourceRoot":"","sources":["../../../src/content/list/list-item.ts"],"names":[],"mappings":"AAqBA,sEAAsE;AACtE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2EAA2E;IAC3E,QAAQ,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;IACtD,qFAAqF;IACrF,OAAO,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IAC/B;;;OAGG;IACH,OAAO,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACzD,gDAAgD;IAChD,QAAQ,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;IACtD,0DAA0D;IAC1D,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACxD,iGAAiG;IACjG,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;CACrD,CAAC;AAEF,qCAAqC;AACrC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,eAAO,MAAM,aAAa,EAAG,eAAwB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`@layer refine.base{:host{gap:var(--size-1);align-items:center;display:flex}.pagination{gap:var(--pagination-gap,var(--size-1));align-items:center;margin:0;padding:0;list-style:none;display:flex}li{display:contents}button{all:unset;box-sizing:border-box;min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));min-height:var(--_touch-target);padding:0 var(--size-2);font-size:var(--_font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--color-contrast-700);cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--border) solid transparent;border-radius:var(--pagination-radius,var(--rounded-lg));transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}:host(:not([variant])) button,:host([variant=ghost]) button{color:var(--color-contrast-700);background:0 0;border-width:0;border-color:#0000}:host(:not([variant])) button:hover:not(:is(:disabled,[aria-current=page])),:host([variant=ghost]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop)}:host([variant=solid]) button{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=solid]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-focus)}:host([variant=flat]) button{color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));border-color:color-mix(in oklch, var(--_theme-focus) 20%, transparent);box-shadow:var(--inset-shadow-2xs)}:host([variant=flat]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus)}:host([variant=bordered]) button{color:var(--_theme-base);background:var(--_theme-backdrop);border-color:var(--_theme-border);box-shadow:var(--inset-shadow-xs)}:host([variant=bordered]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button{color:var(--_theme-base);border-color:var(--_theme-base);background:0 0}:host([variant=outline]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop);border-color:var(--_theme-focus)}:host([variant=text]) button{color:var(--_theme-base);background:0 0;border-width:0;border-color:#0000}:host([variant=text]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-focus);background:0 0}:host([variant=frost]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent);-webkit-backdrop-filter:blur(var(--blur-xl)) saturate(200%);backdrop-filter:blur(var(--blur-xl)) saturate(200%)}:host([variant=frost]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);border-color:color-mix(in oklch, var(--_theme-focus) 55%, transparent)}
|
|
1
|
+
var e=`@layer refine.base{:host{gap:var(--size-1);align-items:center;display:flex}.pagination{gap:var(--pagination-gap,var(--size-1));align-items:center;margin:0;padding:0;list-style:none;display:flex}li{display:contents}button{all:unset;box-sizing:border-box;min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));min-height:var(--_touch-target);padding:0 var(--size-2);font-size:var(--_font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--color-contrast-700);cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--border) solid transparent;border-radius:var(--pagination-radius,var(--rounded-lg));transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}:host(:not([variant])) button,:host([variant=ghost]) button{color:var(--color-contrast-700);background:0 0;border-width:0;border-color:#0000}:host(:not([variant])) button:hover:not(:is(:disabled,[aria-current=page])),:host([variant=ghost]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop)}:host([variant=solid]) button{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=solid]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-focus)}:host([variant=flat]) button{color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));border-color:color-mix(in oklch, var(--_theme-focus) 20%, transparent);box-shadow:var(--inset-shadow-2xs)}:host([variant=flat]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus)}:host([variant=bordered]) button{color:var(--_theme-base);background:var(--_theme-backdrop);border-color:var(--_theme-border);box-shadow:var(--inset-shadow-xs)}:host([variant=bordered]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button{color:var(--_theme-base);border-color:var(--_theme-base);background:0 0}:host([variant=outline]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop);border-color:var(--_theme-focus)}:host([variant=text]) button{color:var(--_theme-base);background:0 0;border-width:0;border-color:#0000}:host([variant=text]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-focus);background:0 0}:host([variant=frost]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent);-webkit-backdrop-filter:blur(var(--blur-xl)) saturate(200%);backdrop-filter:blur(var(--blur-xl)) saturate(200%)}:host([variant=frost]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);border-color:color-mix(in oklch, var(--_theme-focus) 55%, transparent)}button:hover:not(:is(:disabled,[aria-current=page])){background:var(--color-contrast-100)}button:focus-visible{outline:var(--border-2) solid var(--_theme-base,var(--color-contrast-500));outline-offset:var(--border-2)}button[aria-current=page]{font-weight:var(--font-bold);color:var(--_theme-contrast,var(--color-canvas));cursor:default;background:var(--_theme-base,var(--color-contrast-800));border-color:var(--_theme-base,var(--color-contrast-800))}:host([variant=ghost]) button[aria-current=page],:host(:not([variant])) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=solid]) button[aria-current=page]{background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=flat]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=bordered]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=text]) button[aria-current=page]{color:var(--_theme-focus);text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}:host([variant=frost]) button[aria-current=page]{color:var(--_theme-contrast);background:color-mix(in oklch, var(--_theme-base) 70%, transparent);border-color:var(--_theme-base)}button:disabled{cursor:not-allowed;opacity:.4}.ellipsis{min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));font-size:var(--_font-size,var(--text-sm));color:var(--color-contrast-400);cursor:default;justify-content:center;align-items:center;display:inline-flex}}@layer refine.utilities{:host([size=sm]){--pagination-item-size:var(--size-7);--pagination-gap:var(--size-0_5);--_font-size:var(--text-xs)}:host([size=lg]){--pagination-item-size:var(--size-11);--_font-size:var(--text-base)}}`;exports.default=e;
|
|
2
2
|
//# sourceMappingURL=pagination.css.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.css.cjs","names":[],"sources":["../../../src/content/pagination/pagination.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .pagination {\n display: flex;\n gap: var(--pagination-gap, var(--size-1));\n align-items: center;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n li {\n display: contents;\n }\n\n button {\n all: unset;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n min-height: var(--_touch-target);\n padding: 0 var(--size-2);\n font-size: var(--_font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n cursor: pointer;\n user-select: none;\n border: var(--border) solid transparent;\n border-radius: var(--pagination-radius, var(--rounded-lg));\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n /* Default (ghost-like) behavior unless variant is specified */\n :host(:not([variant])) button,\n :host([variant='ghost']) button {\n color: var(--color-contrast-700);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host(:not([variant])) button:hover:not(:disabled, [aria-current='page']),\n :host([variant='ghost']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n }\n\n :host([variant='solid']) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='solid']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-focus);\n }\n\n :host([variant='flat']) button {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));\n border-color: color-mix(in oklch, var(--_theme-focus) 20%, transparent);\n box-shadow: var(--inset-shadow-2xs);\n }\n\n :host([variant='flat']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n }\n\n :host([variant='bordered']) button {\n color: var(--_theme-base);\n background: var(--_theme-backdrop);\n border-color: var(--_theme-border);\n box-shadow: var(--inset-shadow-xs);\n }\n\n :host([variant='bordered']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: var(--_theme-base);\n }\n\n :host([variant='outline']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='text']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host([variant='text']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-focus);\n background: transparent;\n }\n\n :host([variant='frost']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-xl)) saturate(200%);\n }\n\n :host([variant='frost']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);\n border-color: color-mix(in oklch, var(--_theme-focus) 55%, transparent);\n }\n\n
|
|
1
|
+
{"version":3,"file":"pagination.css.cjs","names":[],"sources":["../../../src/content/pagination/pagination.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .pagination {\n display: flex;\n gap: var(--pagination-gap, var(--size-1));\n align-items: center;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n li {\n display: contents;\n }\n\n button {\n all: unset;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n min-height: var(--_touch-target);\n padding: 0 var(--size-2);\n font-size: var(--_font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n cursor: pointer;\n user-select: none;\n border: var(--border) solid transparent;\n border-radius: var(--pagination-radius, var(--rounded-lg));\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n /* Default (ghost-like) behavior unless variant is specified */\n :host(:not([variant])) button,\n :host([variant='ghost']) button {\n color: var(--color-contrast-700);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host(:not([variant])) button:hover:not(:disabled, [aria-current='page']),\n :host([variant='ghost']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n }\n\n :host([variant='solid']) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='solid']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-focus);\n }\n\n :host([variant='flat']) button {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));\n border-color: color-mix(in oklch, var(--_theme-focus) 20%, transparent);\n box-shadow: var(--inset-shadow-2xs);\n }\n\n :host([variant='flat']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n }\n\n :host([variant='bordered']) button {\n color: var(--_theme-base);\n background: var(--_theme-backdrop);\n border-color: var(--_theme-border);\n box-shadow: var(--inset-shadow-xs);\n }\n\n :host([variant='bordered']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: var(--_theme-base);\n }\n\n :host([variant='outline']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='text']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host([variant='text']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-focus);\n background: transparent;\n }\n\n :host([variant='frost']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-xl)) saturate(200%);\n }\n\n :host([variant='frost']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);\n border-color: color-mix(in oklch, var(--_theme-focus) 55%, transparent);\n }\n\n button:hover:not(:disabled, [aria-current='page']) {\n background: var(--color-contrast-100);\n }\n\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-base, var(--color-contrast-500));\n outline-offset: var(--border-2);\n }\n\n /* Selected page styling - applies to all variants */\n button[aria-current='page'] {\n font-weight: var(--font-bold);\n color: var(--_theme-contrast, var(--color-canvas));\n cursor: default;\n background: var(--_theme-base, var(--color-contrast-800));\n border-color: var(--_theme-base, var(--color-contrast-800));\n }\n\n :host([variant='ghost']) button[aria-current='page'],\n :host(:not([variant])) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='solid']) button[aria-current='page'] {\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='flat']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='bordered']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='text']) button[aria-current='page'] {\n color: var(--_theme-focus);\n text-decoration-line: underline;\n text-decoration-thickness: 2px;\n text-underline-offset: 4px;\n }\n\n :host([variant='frost']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: color-mix(in oklch, var(--_theme-base) 70%, transparent);\n border-color: var(--_theme-base);\n }\n\n button:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n font-size: var(--_font-size, var(--text-sm));\n color: var(--color-contrast-400);\n cursor: default;\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --pagination-item-size: var(--size-7);\n --pagination-gap: var(--size-0_5);\n --_font-size: var(--text-xs);\n }\n\n :host([size='lg']) {\n --pagination-item-size: var(--size-11);\n --_font-size: var(--text-base);\n }\n}\n"],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/content/pagination/pagination.css?inline
|
|
2
|
-
var e = "@layer refine.base{:host{gap:var(--size-1);align-items:center;display:flex}.pagination{gap:var(--pagination-gap,var(--size-1));align-items:center;margin:0;padding:0;list-style:none;display:flex}li{display:contents}button{all:unset;box-sizing:border-box;min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));min-height:var(--_touch-target);padding:0 var(--size-2);font-size:var(--_font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--color-contrast-700);cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--border) solid transparent;border-radius:var(--pagination-radius,var(--rounded-lg));transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}:host(:not([variant])) button,:host([variant=ghost]) button{color:var(--color-contrast-700);background:0 0;border-width:0;border-color:#0000}:host(:not([variant])) button:hover:not(:is(:disabled,[aria-current=page])),:host([variant=ghost]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop)}:host([variant=solid]) button{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=solid]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-focus)}:host([variant=flat]) button{color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));border-color:color-mix(in oklch, var(--_theme-focus) 20%, transparent);box-shadow:var(--inset-shadow-2xs)}:host([variant=flat]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus)}:host([variant=bordered]) button{color:var(--_theme-base);background:var(--_theme-backdrop);border-color:var(--_theme-border);box-shadow:var(--inset-shadow-xs)}:host([variant=bordered]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button{color:var(--_theme-base);border-color:var(--_theme-base);background:0 0}:host([variant=outline]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop);border-color:var(--_theme-focus)}:host([variant=text]) button{color:var(--_theme-base);background:0 0;border-width:0;border-color:#0000}:host([variant=text]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-focus);background:0 0}:host([variant=frost]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent);-webkit-backdrop-filter:blur(var(--blur-xl)) saturate(200%);backdrop-filter:blur(var(--blur-xl)) saturate(200%)}:host([variant=frost]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);border-color:color-mix(in oklch, var(--_theme-focus) 55%, transparent)}
|
|
2
|
+
var e = "@layer refine.base{:host{gap:var(--size-1);align-items:center;display:flex}.pagination{gap:var(--pagination-gap,var(--size-1));align-items:center;margin:0;padding:0;list-style:none;display:flex}li{display:contents}button{all:unset;box-sizing:border-box;min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));min-height:var(--_touch-target);padding:0 var(--size-2);font-size:var(--_font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--color-contrast-700);cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--border) solid transparent;border-radius:var(--pagination-radius,var(--rounded-lg));transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}:host(:not([variant])) button,:host([variant=ghost]) button{color:var(--color-contrast-700);background:0 0;border-width:0;border-color:#0000}:host(:not([variant])) button:hover:not(:is(:disabled,[aria-current=page])),:host([variant=ghost]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop)}:host([variant=solid]) button{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=solid]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-focus)}:host([variant=flat]) button{color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));border-color:color-mix(in oklch, var(--_theme-focus) 20%, transparent);box-shadow:var(--inset-shadow-2xs)}:host([variant=flat]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus)}:host([variant=bordered]) button{color:var(--_theme-base);background:var(--_theme-backdrop);border-color:var(--_theme-border);box-shadow:var(--inset-shadow-xs)}:host([variant=bordered]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button{color:var(--_theme-base);border-color:var(--_theme-base);background:0 0}:host([variant=outline]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop);border-color:var(--_theme-focus)}:host([variant=text]) button{color:var(--_theme-base);background:0 0;border-width:0;border-color:#0000}:host([variant=text]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-focus);background:0 0}:host([variant=frost]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent);-webkit-backdrop-filter:blur(var(--blur-xl)) saturate(200%);backdrop-filter:blur(var(--blur-xl)) saturate(200%)}:host([variant=frost]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);border-color:color-mix(in oklch, var(--_theme-focus) 55%, transparent)}button:hover:not(:is(:disabled,[aria-current=page])){background:var(--color-contrast-100)}button:focus-visible{outline:var(--border-2) solid var(--_theme-base,var(--color-contrast-500));outline-offset:var(--border-2)}button[aria-current=page]{font-weight:var(--font-bold);color:var(--_theme-contrast,var(--color-canvas));cursor:default;background:var(--_theme-base,var(--color-contrast-800));border-color:var(--_theme-base,var(--color-contrast-800))}:host([variant=ghost]) button[aria-current=page],:host(:not([variant])) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=solid]) button[aria-current=page]{background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=flat]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=bordered]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=text]) button[aria-current=page]{color:var(--_theme-focus);text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}:host([variant=frost]) button[aria-current=page]{color:var(--_theme-contrast);background:color-mix(in oklch, var(--_theme-base) 70%, transparent);border-color:var(--_theme-base)}button:disabled{cursor:not-allowed;opacity:.4}.ellipsis{min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));font-size:var(--_font-size,var(--text-sm));color:var(--color-contrast-400);cursor:default;justify-content:center;align-items:center;display:inline-flex}}@layer refine.utilities{:host([size=sm]){--pagination-item-size:var(--size-7);--pagination-gap:var(--size-0_5);--_font-size:var(--text-xs)}:host([size=lg]){--pagination-item-size:var(--size-11);--_font-size:var(--text-base)}}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.css.js","names":[],"sources":["../../../src/content/pagination/pagination.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .pagination {\n display: flex;\n gap: var(--pagination-gap, var(--size-1));\n align-items: center;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n li {\n display: contents;\n }\n\n button {\n all: unset;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n min-height: var(--_touch-target);\n padding: 0 var(--size-2);\n font-size: var(--_font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n cursor: pointer;\n user-select: none;\n border: var(--border) solid transparent;\n border-radius: var(--pagination-radius, var(--rounded-lg));\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n /* Default (ghost-like) behavior unless variant is specified */\n :host(:not([variant])) button,\n :host([variant='ghost']) button {\n color: var(--color-contrast-700);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host(:not([variant])) button:hover:not(:disabled, [aria-current='page']),\n :host([variant='ghost']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n }\n\n :host([variant='solid']) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='solid']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-focus);\n }\n\n :host([variant='flat']) button {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));\n border-color: color-mix(in oklch, var(--_theme-focus) 20%, transparent);\n box-shadow: var(--inset-shadow-2xs);\n }\n\n :host([variant='flat']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n }\n\n :host([variant='bordered']) button {\n color: var(--_theme-base);\n background: var(--_theme-backdrop);\n border-color: var(--_theme-border);\n box-shadow: var(--inset-shadow-xs);\n }\n\n :host([variant='bordered']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: var(--_theme-base);\n }\n\n :host([variant='outline']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='text']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host([variant='text']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-focus);\n background: transparent;\n }\n\n :host([variant='frost']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-xl)) saturate(200%);\n }\n\n :host([variant='frost']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);\n border-color: color-mix(in oklch, var(--_theme-focus) 55%, transparent);\n }\n\n
|
|
1
|
+
{"version":3,"file":"pagination.css.js","names":[],"sources":["../../../src/content/pagination/pagination.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .pagination {\n display: flex;\n gap: var(--pagination-gap, var(--size-1));\n align-items: center;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n li {\n display: contents;\n }\n\n button {\n all: unset;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n min-height: var(--_touch-target);\n padding: 0 var(--size-2);\n font-size: var(--_font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n cursor: pointer;\n user-select: none;\n border: var(--border) solid transparent;\n border-radius: var(--pagination-radius, var(--rounded-lg));\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n /* Default (ghost-like) behavior unless variant is specified */\n :host(:not([variant])) button,\n :host([variant='ghost']) button {\n color: var(--color-contrast-700);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host(:not([variant])) button:hover:not(:disabled, [aria-current='page']),\n :host([variant='ghost']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n }\n\n :host([variant='solid']) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='solid']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-focus);\n }\n\n :host([variant='flat']) button {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));\n border-color: color-mix(in oklch, var(--_theme-focus) 20%, transparent);\n box-shadow: var(--inset-shadow-2xs);\n }\n\n :host([variant='flat']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n }\n\n :host([variant='bordered']) button {\n color: var(--_theme-base);\n background: var(--_theme-backdrop);\n border-color: var(--_theme-border);\n box-shadow: var(--inset-shadow-xs);\n }\n\n :host([variant='bordered']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: var(--_theme-base);\n }\n\n :host([variant='outline']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='text']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host([variant='text']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-focus);\n background: transparent;\n }\n\n :host([variant='frost']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-xl)) saturate(200%);\n }\n\n :host([variant='frost']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);\n border-color: color-mix(in oklch, var(--_theme-focus) 55%, transparent);\n }\n\n button:hover:not(:disabled, [aria-current='page']) {\n background: var(--color-contrast-100);\n }\n\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-base, var(--color-contrast-500));\n outline-offset: var(--border-2);\n }\n\n /* Selected page styling - applies to all variants */\n button[aria-current='page'] {\n font-weight: var(--font-bold);\n color: var(--_theme-contrast, var(--color-canvas));\n cursor: default;\n background: var(--_theme-base, var(--color-contrast-800));\n border-color: var(--_theme-base, var(--color-contrast-800));\n }\n\n :host([variant='ghost']) button[aria-current='page'],\n :host(:not([variant])) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='solid']) button[aria-current='page'] {\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='flat']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='bordered']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='text']) button[aria-current='page'] {\n color: var(--_theme-focus);\n text-decoration-line: underline;\n text-decoration-thickness: 2px;\n text-underline-offset: 4px;\n }\n\n :host([variant='frost']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: color-mix(in oklch, var(--_theme-base) 70%, transparent);\n border-color: var(--_theme-base);\n }\n\n button:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n font-size: var(--_font-size, var(--text-sm));\n color: var(--color-contrast-400);\n cursor: default;\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --pagination-item-size: var(--size-7);\n --pagination-gap: var(--size-0_5);\n --_font-size: var(--text-xs);\n }\n\n :host([size='lg']) {\n --pagination-item-size: var(--size-11);\n --_font-size: var(--text-base);\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=`@layer refine.base{:host{--_bg:var(--stats-bg,var(--color-canvas));--_color:var(--stats-color,var(--color-contrast-900));--_border-color:var(--stats-border-color,var(--color-divider));--_radius:var(--stats-radius,var(--rounded-lg));--_padding:var(--stats-padding,var(--size-4));--_min-height:var(--stats-min-height,var(--size-32));--_value-size:var(--stats-value-size,var(--text-2xl));--_icon-size:var(--size-9);--_gap:var(--size-3);min-width:0;display:block}.stats{box-sizing:border-box;gap:var(--_gap);width:100%;min-width:0;min-height:var(--_min-height);padding:var(--_padding);color:var(--_color);background:var(--_bg);border:var(--border) solid var(--_border-color);border-radius:var(--_radius);flex-direction:column;display:flex;position:relative;overflow:hidden}.header,.body,.footer{min-width:0;display:flex}.header{gap:var(--size-2);align-items:center}.icon{flex:0 0 var(--_icon-size);width:var(--_icon-size);height:var(--_icon-size);color:var(--_theme-base,var(--color-primary));background:var(--stats-icon-bg,var(--_theme-backdrop,var(--color-contrast-100)));border-radius:var(--rounded-md);place-items:center;display:grid}.label,.description,.trend{text-overflow:ellipsis;font-size:var(--text-xs);white-space:nowrap;overflow:hidden}.label{font-weight:var(--font-semibold);color:var(--color-contrast-700)}.body{gap:var(--size-3);flex:1;justify-content:space-between;align-items:end}.value{text-overflow:ellipsis;min-width:0;font-size:var(--_value-size);font-variant-numeric:tabular-nums;line-height:var(--leading-tight);color:inherit;letter-spacing:-.03em;white-space:nowrap;overflow:hidden}.visual{flex:0 45%;justify-content:end;align-items:end;min-width:50%;display:flex;position:absolute;bottom:0;right:0}.footer{gap:var(--size-1);align-items:center}.trend{font-weight:var(--font-semibold);color:var(--color-contrast-700);flex-shrink:0}.trend[data-direction=up]{color:var(--stats-trend-up,var(--color-success))}.trend[data-direction=down]{color:var(--stats-trend-down,var(--color-error))}.description{min-width:0;color:var(--color-contrast-700)}.loading{z-index:2;pointer-events:none;background:linear-gradient(100deg, color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 20%, color-mix(in oklch, var(--_bg) 72%, var(--color-contrast-200)) 45%, color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 70%);background-size:220% 100%;display:none;position:absolute;inset:0}[hidden]{display:none}}@layer refine.variants{:host([variant=plain]) .stats{background:var(--stats-bg,transparent);border:0;border-radius:0;min-height:0}:host([variant=solid]){--_bg:var(--stats-bg,var(--_theme-base));--_color:var(--stats-color,var(--_theme-contrast));--_border-color:var(--stats-border-color,var(--_theme-base))}:host([variant=solid]) .label,:host([variant=solid]) .description,:host([variant=solid]) .trend{color:color-mix(in oklch, var(--_color) 78%, transparent)}}@layer refine.overrides{:host([loading]) .loading{animation:var(--_motion-animation,stats-loading 1.4s linear infinite);display:block}:host([loading]) .header,:host([loading]) .body,:host([loading]) .footer{visibility:hidden}:host([disabled]){pointer-events:none;opacity:.55;filter:grayscale(.35)}}@keyframes stats-loading{0%{background-position:100% 0}to{background-position:-120% 0}}`;exports.default=e;
|
|
2
|
+
//# sourceMappingURL=stats.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.css.cjs","names":[],"sources":["../../../src/content/stats/stats.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--stats-bg, var(--color-canvas));\n --_color: var(--stats-color, var(--color-contrast-900));\n --_border-color: var(--stats-border-color, var(--color-divider));\n --_radius: var(--stats-radius, var(--rounded-lg));\n --_padding: var(--stats-padding, var(--size-4));\n --_min-height: var(--stats-min-height, var(--size-32));\n --_value-size: var(--stats-value-size, var(--text-2xl));\n --_icon-size: var(--size-9);\n --_gap: var(--size-3);\n\n display: block;\n min-width: 0;\n }\n\n .stats {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--_gap);\n width: 100%;\n min-width: 0;\n min-height: var(--_min-height);\n padding: var(--_padding);\n overflow: hidden;\n color: var(--_color);\n background: var(--_bg);\n border: var(--border) solid var(--_border-color);\n border-radius: var(--_radius);\n }\n\n .header,\n .body,\n .footer {\n display: flex;\n min-width: 0;\n }\n\n .header {\n gap: var(--size-2);\n align-items: center;\n }\n\n .icon {\n display: grid;\n flex: 0 0 var(--_icon-size);\n place-items: center;\n width: var(--_icon-size);\n height: var(--_icon-size);\n color: var(--_theme-base, var(--color-primary));\n background: var(--stats-icon-bg, var(--_theme-backdrop, var(--color-contrast-100)));\n border-radius: var(--rounded-md);\n }\n\n .label,\n .description,\n .trend {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n white-space: nowrap;\n }\n\n .label {\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n }\n\n .body {\n flex: 1;\n gap: var(--size-3);\n align-items: end;\n justify-content: space-between;\n }\n\n .value {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--_value-size);\n font-variant-numeric: tabular-nums;\n line-height: var(--leading-tight);\n color: inherit;\n letter-spacing: -0.03em;\n white-space: nowrap;\n }\n\n .visual {\n position: absolute;\n right: 0;\n bottom: 0;\n display: flex;\n flex: 0 1 45%;\n align-items: end;\n justify-content: end;\n min-width: 50%;\n }\n\n .footer {\n gap: var(--size-1);\n align-items: center;\n }\n\n .trend {\n flex-shrink: 0;\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n }\n\n .trend[data-direction='up'] {\n color: var(--stats-trend-up, var(--color-success));\n }\n\n .trend[data-direction='down'] {\n color: var(--stats-trend-down, var(--color-error));\n }\n\n .description {\n min-width: 0;\n color: var(--color-contrast-700);\n }\n\n .loading {\n position: absolute;\n inset: 0;\n z-index: 2;\n display: none;\n pointer-events: none;\n background: linear-gradient(\n 100deg,\n color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 20%,\n color-mix(in oklch, var(--_bg) 72%, var(--color-contrast-200)) 45%,\n color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 70%\n );\n background-size: 220% 100%;\n }\n\n [hidden] {\n display: none;\n }\n}\n\n@layer refine.variants {\n :host([variant='plain']) .stats {\n min-height: 0;\n background: var(--stats-bg, transparent);\n border: 0;\n border-radius: 0;\n }\n\n :host([variant='solid']) {\n --_bg: var(--stats-bg, var(--_theme-base));\n --_color: var(--stats-color, var(--_theme-contrast));\n --_border-color: var(--stats-border-color, var(--_theme-base));\n }\n\n :host([variant='solid']) .label,\n :host([variant='solid']) .description,\n :host([variant='solid']) .trend {\n color: color-mix(in oklch, var(--_color) 78%, transparent);\n }\n}\n\n@layer refine.overrides {\n :host([loading]) .loading {\n display: block;\n animation: var(--_motion-animation, stats-loading 1.4s linear infinite);\n }\n\n :host([loading]) .header,\n :host([loading]) .body,\n :host([loading]) .footer {\n visibility: hidden;\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.55;\n filter: grayscale(0.35);\n }\n}\n\n@keyframes stats-loading {\n from {\n background-position: 100% 0;\n }\n\n to {\n background-position: -120% 0;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/content/stats/stats.css?inline
|
|
2
|
+
var e = "@layer refine.base{:host{--_bg:var(--stats-bg,var(--color-canvas));--_color:var(--stats-color,var(--color-contrast-900));--_border-color:var(--stats-border-color,var(--color-divider));--_radius:var(--stats-radius,var(--rounded-lg));--_padding:var(--stats-padding,var(--size-4));--_min-height:var(--stats-min-height,var(--size-32));--_value-size:var(--stats-value-size,var(--text-2xl));--_icon-size:var(--size-9);--_gap:var(--size-3);min-width:0;display:block}.stats{box-sizing:border-box;gap:var(--_gap);width:100%;min-width:0;min-height:var(--_min-height);padding:var(--_padding);color:var(--_color);background:var(--_bg);border:var(--border) solid var(--_border-color);border-radius:var(--_radius);flex-direction:column;display:flex;position:relative;overflow:hidden}.header,.body,.footer{min-width:0;display:flex}.header{gap:var(--size-2);align-items:center}.icon{flex:0 0 var(--_icon-size);width:var(--_icon-size);height:var(--_icon-size);color:var(--_theme-base,var(--color-primary));background:var(--stats-icon-bg,var(--_theme-backdrop,var(--color-contrast-100)));border-radius:var(--rounded-md);place-items:center;display:grid}.label,.description,.trend{text-overflow:ellipsis;font-size:var(--text-xs);white-space:nowrap;overflow:hidden}.label{font-weight:var(--font-semibold);color:var(--color-contrast-700)}.body{gap:var(--size-3);flex:1;justify-content:space-between;align-items:end}.value{text-overflow:ellipsis;min-width:0;font-size:var(--_value-size);font-variant-numeric:tabular-nums;line-height:var(--leading-tight);color:inherit;letter-spacing:-.03em;white-space:nowrap;overflow:hidden}.visual{flex:0 45%;justify-content:end;align-items:end;min-width:50%;display:flex;position:absolute;bottom:0;right:0}.footer{gap:var(--size-1);align-items:center}.trend{font-weight:var(--font-semibold);color:var(--color-contrast-700);flex-shrink:0}.trend[data-direction=up]{color:var(--stats-trend-up,var(--color-success))}.trend[data-direction=down]{color:var(--stats-trend-down,var(--color-error))}.description{min-width:0;color:var(--color-contrast-700)}.loading{z-index:2;pointer-events:none;background:linear-gradient(100deg, color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 20%, color-mix(in oklch, var(--_bg) 72%, var(--color-contrast-200)) 45%, color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 70%);background-size:220% 100%;display:none;position:absolute;inset:0}[hidden]{display:none}}@layer refine.variants{:host([variant=plain]) .stats{background:var(--stats-bg,transparent);border:0;border-radius:0;min-height:0}:host([variant=solid]){--_bg:var(--stats-bg,var(--_theme-base));--_color:var(--stats-color,var(--_theme-contrast));--_border-color:var(--stats-border-color,var(--_theme-base))}:host([variant=solid]) .label,:host([variant=solid]) .description,:host([variant=solid]) .trend{color:color-mix(in oklch, var(--_color) 78%, transparent)}}@layer refine.overrides{:host([loading]) .loading{animation:var(--_motion-animation,stats-loading 1.4s linear infinite);display:block}:host([loading]) .header,:host([loading]) .body,:host([loading]) .footer{visibility:hidden}:host([disabled]){pointer-events:none;opacity:.55;filter:grayscale(.35)}}@keyframes stats-loading{0%{background-position:100% 0}to{background-position:-120% 0}}";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as default };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=stats.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.css.js","names":[],"sources":["../../../src/content/stats/stats.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--stats-bg, var(--color-canvas));\n --_color: var(--stats-color, var(--color-contrast-900));\n --_border-color: var(--stats-border-color, var(--color-divider));\n --_radius: var(--stats-radius, var(--rounded-lg));\n --_padding: var(--stats-padding, var(--size-4));\n --_min-height: var(--stats-min-height, var(--size-32));\n --_value-size: var(--stats-value-size, var(--text-2xl));\n --_icon-size: var(--size-9);\n --_gap: var(--size-3);\n\n display: block;\n min-width: 0;\n }\n\n .stats {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--_gap);\n width: 100%;\n min-width: 0;\n min-height: var(--_min-height);\n padding: var(--_padding);\n overflow: hidden;\n color: var(--_color);\n background: var(--_bg);\n border: var(--border) solid var(--_border-color);\n border-radius: var(--_radius);\n }\n\n .header,\n .body,\n .footer {\n display: flex;\n min-width: 0;\n }\n\n .header {\n gap: var(--size-2);\n align-items: center;\n }\n\n .icon {\n display: grid;\n flex: 0 0 var(--_icon-size);\n place-items: center;\n width: var(--_icon-size);\n height: var(--_icon-size);\n color: var(--_theme-base, var(--color-primary));\n background: var(--stats-icon-bg, var(--_theme-backdrop, var(--color-contrast-100)));\n border-radius: var(--rounded-md);\n }\n\n .label,\n .description,\n .trend {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n white-space: nowrap;\n }\n\n .label {\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n }\n\n .body {\n flex: 1;\n gap: var(--size-3);\n align-items: end;\n justify-content: space-between;\n }\n\n .value {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--_value-size);\n font-variant-numeric: tabular-nums;\n line-height: var(--leading-tight);\n color: inherit;\n letter-spacing: -0.03em;\n white-space: nowrap;\n }\n\n .visual {\n position: absolute;\n right: 0;\n bottom: 0;\n display: flex;\n flex: 0 1 45%;\n align-items: end;\n justify-content: end;\n min-width: 50%;\n }\n\n .footer {\n gap: var(--size-1);\n align-items: center;\n }\n\n .trend {\n flex-shrink: 0;\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n }\n\n .trend[data-direction='up'] {\n color: var(--stats-trend-up, var(--color-success));\n }\n\n .trend[data-direction='down'] {\n color: var(--stats-trend-down, var(--color-error));\n }\n\n .description {\n min-width: 0;\n color: var(--color-contrast-700);\n }\n\n .loading {\n position: absolute;\n inset: 0;\n z-index: 2;\n display: none;\n pointer-events: none;\n background: linear-gradient(\n 100deg,\n color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 20%,\n color-mix(in oklch, var(--_bg) 72%, var(--color-contrast-200)) 45%,\n color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 70%\n );\n background-size: 220% 100%;\n }\n\n [hidden] {\n display: none;\n }\n}\n\n@layer refine.variants {\n :host([variant='plain']) .stats {\n min-height: 0;\n background: var(--stats-bg, transparent);\n border: 0;\n border-radius: 0;\n }\n\n :host([variant='solid']) {\n --_bg: var(--stats-bg, var(--_theme-base));\n --_color: var(--stats-color, var(--_theme-contrast));\n --_border-color: var(--stats-border-color, var(--_theme-base));\n }\n\n :host([variant='solid']) .label,\n :host([variant='solid']) .description,\n :host([variant='solid']) .trend {\n color: color-mix(in oklch, var(--_color) 78%, transparent);\n }\n}\n\n@layer refine.overrides {\n :host([loading]) .loading {\n display: block;\n animation: var(--_motion-animation, stats-loading 1.4s linear infinite);\n }\n\n :host([loading]) .header,\n :host([loading]) .body,\n :host([loading]) .footer {\n visibility: hidden;\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.55;\n filter: grayscale(0.35);\n }\n}\n\n@keyframes stats-loading {\n from {\n background-position: 100% 0;\n }\n\n to {\n background-position: -120% 0;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { ComponentSize, RoundedSize, ThemeColor } from '../../types';
|
|
2
|
+
export type StatsTrendDirection = 'down' | 'neutral' | 'up';
|
|
3
|
+
export type StatsVariant = 'outlined' | 'plain' | 'solid';
|
|
4
|
+
export type OreStatsProps = {
|
|
5
|
+
color?: ThemeColor;
|
|
6
|
+
description?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
label?: string;
|
|
9
|
+
loading?: boolean;
|
|
10
|
+
rounded?: RoundedSize;
|
|
11
|
+
size?: ComponentSize;
|
|
12
|
+
trend?: string;
|
|
13
|
+
'trend-direction'?: StatsTrendDirection;
|
|
14
|
+
value?: string;
|
|
15
|
+
variant?: StatsVariant;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A focused metric card for a label, primary value, supporting context, trend, icon, and optional visual.
|
|
19
|
+
*
|
|
20
|
+
* @element ore-stats
|
|
21
|
+
*
|
|
22
|
+
* @attr {string} label - Metric label
|
|
23
|
+
* @attr {string} value - Primary metric value
|
|
24
|
+
* @attr {string} description - Supporting context
|
|
25
|
+
* @attr {string} trend - Trend text
|
|
26
|
+
* @attr {string} trend-direction - Trend direction: 'up' | 'down' | 'neutral'
|
|
27
|
+
* @attr {string} variant - Visual variant: 'outlined' | 'plain' | 'solid'
|
|
28
|
+
* @attr {string} color - Semantic theme color
|
|
29
|
+
* @attr {string} size - Size: 'sm' | 'md' | 'lg'
|
|
30
|
+
* @attr {string} rounded - Border radius size
|
|
31
|
+
* @attr {boolean} loading - Show loading state
|
|
32
|
+
* @attr {boolean} disabled - Show unavailable state
|
|
33
|
+
*
|
|
34
|
+
* @slot icon - Leading metric icon
|
|
35
|
+
* @slot label - Replaces label text
|
|
36
|
+
* @slot value - Replaces value text
|
|
37
|
+
* @slot visual - Compact chart, progress, or other metric visual
|
|
38
|
+
* @slot trend - Replaces trend text
|
|
39
|
+
* @slot description - Replaces supporting context
|
|
40
|
+
*
|
|
41
|
+
* @cssprop --stats-bg - Card background
|
|
42
|
+
* @cssprop --stats-color - Card foreground color
|
|
43
|
+
* @cssprop --stats-border-color - Card border color
|
|
44
|
+
* @cssprop --stats-radius - Card border radius
|
|
45
|
+
* @cssprop --stats-padding - Card padding
|
|
46
|
+
* @cssprop --stats-min-height - Minimum card height
|
|
47
|
+
* @cssprop --stats-value-size - Primary value font size
|
|
48
|
+
* @cssprop --stats-icon-bg - Icon surface background
|
|
49
|
+
* @cssprop --stats-trend-up - Positive trend color
|
|
50
|
+
* @cssprop --stats-trend-down - Negative trend color
|
|
51
|
+
*
|
|
52
|
+
* @part card - Card surface
|
|
53
|
+
* @part loading - Loading indicator
|
|
54
|
+
* @part header - Label and icon row
|
|
55
|
+
* @part icon - Icon container
|
|
56
|
+
* @part label - Label container
|
|
57
|
+
* @part body - Value and visual row
|
|
58
|
+
* @part value - Primary value container
|
|
59
|
+
* @part visual - Visual slot container
|
|
60
|
+
* @part footer - Trend and description row
|
|
61
|
+
* @part trend - Trend container
|
|
62
|
+
* @part description - Description container
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```html
|
|
66
|
+
* <ore-stats label="Revenue" value="$42,800" trend="+12%" trend-direction="up">
|
|
67
|
+
* <ore-icon slot="icon" name="chart-line"></ore-icon>
|
|
68
|
+
* </ore-stats>
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare const STATS_TAG: "ore-stats";
|
|
72
|
+
//# sourceMappingURL=stats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/content/stats/stats.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG1E,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,eAAO,MAAM,SAAS,EAAG,WAAoB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=(e={})=>{let t=null,n=()=>{
|
|
1
|
+
var e=(e={})=>{let t=null,n=()=>{t&&e.enabled?.value!==!1&&(t.style.height=`auto`,t.style.height=`${t.scrollHeight}px`)};return{recompute:n,wire:e=>(t=e,e.addEventListener(`input`,n),requestAnimationFrame(n),()=>{e.removeEventListener(`input`,n),t===e&&(t=null)})}};exports.createAutoResize=e;
|
|
2
2
|
//# sourceMappingURL=auto-resize.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-resize.cjs","names":[],"sources":["../../src/core/auto-resize.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nexport type AutoResizeOptions = {\n /** Gates growth; omit for an always-on composer field, or pass a signal for a toggleable `auto-resize` attribute. */\n enabled?: Readable<boolean | undefined>;\n};\n\nexport type AutoResizeControl = {\n /** Recomputes height from the wired element's current content. No-ops when `enabled` is false or nothing is wired. */\n recompute: () => void;\n /** Wire onto the raw `<textarea>` when it mounts. Returns a detach function to call on unmount. */\n wire: (el: HTMLTextAreaElement) => () => void;\n};\n\n/**\n * Grows a `<textarea>`'s height to fit its content, shared by every component that offers\n * auto-resize (`ore-textarea`, `ore-message-composer`) instead of each reimplementing it.\n *\n * Owns only height — manual-resize cursor/direction is a per-component styling concern, not\n * shared behavior, so it stays local to whichever component renders a resize handle.\n *\n * @example\n * ```ts\n * const autoResize = createAutoResize({ enabled: props['auto-resize'] });\n *\n * onElement(textareaRef, (el) => autoResize.wire(el));\n * // after a programmatic value change that doesn't fire a native `input` event:\n * autoResize.recompute();\n * ```\n */\nexport const createAutoResize = (options: AutoResizeOptions = {}): AutoResizeControl => {\n let wiredEl: HTMLTextAreaElement | null = null;\n\n const recompute = (): void => {\n if (!wiredEl || options.enabled?.value === false) return;\n\n wiredEl.style.height = 'auto';\n wiredEl.style.height = `${wiredEl.scrollHeight}px`;\n };\n\n const wire = (el: HTMLTextAreaElement): (() => void) => {\n wiredEl = el;\n el.addEventListener('input', recompute);\n\n // Deferred a frame: right after mount, the browser hasn't necessarily finished laying out\n // the textarea yet, so a synchronous `scrollHeight` read here can be stale — often reading\n // as 0 and collapsing the field until the next real `input` event happens to correct it.\n // `ore-textarea` has always worked around this locally with its own extra `requestAnimationFrame`\n // call; folding the deferral into `wire()` itself means every consumer gets it for free.\n requestAnimationFrame(recompute);\n\n return () => {\n el.removeEventListener('input', recompute);\n\n if (wiredEl === el) wiredEl = null;\n };\n };\n\n return { recompute, wire };\n};\n"],"mappings":"AA8BA,IAAa,GAAoB,EAA6B,CAAC,IAAyB,CACtF,IAAI,EAAsC,KAEpC,MAAwB,
|
|
1
|
+
{"version":3,"file":"auto-resize.cjs","names":[],"sources":["../../src/core/auto-resize.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nexport type AutoResizeOptions = {\n /** Gates growth; omit for an always-on composer field, or pass a signal for a toggleable `auto-resize` attribute. */\n enabled?: Readable<boolean | undefined>;\n};\n\nexport type AutoResizeControl = {\n /** Recomputes height from the wired element's current content. No-ops when `enabled` is false or nothing is wired. */\n recompute: () => void;\n /** Wire onto the raw `<textarea>` when it mounts. Returns a detach function to call on unmount. */\n wire: (el: HTMLTextAreaElement) => () => void;\n};\n\n/**\n * Grows a `<textarea>`'s height to fit its content, shared by every component that offers\n * auto-resize (`ore-textarea`, `ore-message-composer`) instead of each reimplementing it.\n *\n * Owns only height — manual-resize cursor/direction is a per-component styling concern, not\n * shared behavior, so it stays local to whichever component renders a resize handle.\n *\n * @example\n * ```ts\n * const autoResize = createAutoResize({ enabled: props['auto-resize'] });\n *\n * onElement(textareaRef, (el) => autoResize.wire(el));\n * // after a programmatic value change that doesn't fire a native `input` event:\n * autoResize.recompute();\n * ```\n */\nexport const createAutoResize = (options: AutoResizeOptions = {}): AutoResizeControl => {\n let wiredEl: HTMLTextAreaElement | null = null;\n\n const recompute = (): void => {\n if (!wiredEl || options.enabled?.value === false) return;\n\n wiredEl.style.height = 'auto';\n wiredEl.style.height = `${wiredEl.scrollHeight}px`;\n };\n\n const wire = (el: HTMLTextAreaElement): (() => void) => {\n wiredEl = el;\n el.addEventListener('input', recompute);\n\n // Deferred a frame: right after mount, the browser hasn't necessarily finished laying out\n // the textarea yet, so a synchronous `scrollHeight` read here can be stale — often reading\n // as 0 and collapsing the field until the next real `input` event happens to correct it.\n // `ore-textarea` has always worked around this locally with its own extra `requestAnimationFrame`\n // call; folding the deferral into `wire()` itself means every consumer gets it for free.\n requestAnimationFrame(recompute);\n\n return () => {\n el.removeEventListener('input', recompute);\n\n if (wiredEl === el) wiredEl = null;\n };\n };\n\n return { recompute, wire };\n};\n"],"mappings":"AA8BA,IAAa,GAAoB,EAA6B,CAAC,IAAyB,CACtF,IAAI,EAAsC,KAEpC,MAAwB,CACvB,GAAW,EAAQ,SAAS,QAAU,KAE3C,EAAQ,MAAM,OAAS,OACvB,EAAQ,MAAM,OAAS,GAAG,EAAQ,aAAa,IACjD,EAoBA,MAAO,CAAE,YAAW,KAlBN,IACZ,EAAU,EACV,EAAG,iBAAiB,QAAS,CAAS,EAOtC,sBAAsB,CAAS,MAElB,CACX,EAAG,oBAAoB,QAAS,CAAS,EAErC,IAAY,IAAI,EAAU,KAChC,EAGuB,CAC3B"}
|
package/dist/core/auto-resize.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//#region src/core/auto-resize.ts
|
|
2
2
|
var e = (e = {}) => {
|
|
3
3
|
let t = null, n = () => {
|
|
4
|
-
|
|
4
|
+
t && e.enabled?.value !== !1 && (t.style.height = "auto", t.style.height = `${t.scrollHeight}px`);
|
|
5
5
|
};
|
|
6
6
|
return {
|
|
7
7
|
recompute: n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-resize.js","names":[],"sources":["../../src/core/auto-resize.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nexport type AutoResizeOptions = {\n /** Gates growth; omit for an always-on composer field, or pass a signal for a toggleable `auto-resize` attribute. */\n enabled?: Readable<boolean | undefined>;\n};\n\nexport type AutoResizeControl = {\n /** Recomputes height from the wired element's current content. No-ops when `enabled` is false or nothing is wired. */\n recompute: () => void;\n /** Wire onto the raw `<textarea>` when it mounts. Returns a detach function to call on unmount. */\n wire: (el: HTMLTextAreaElement) => () => void;\n};\n\n/**\n * Grows a `<textarea>`'s height to fit its content, shared by every component that offers\n * auto-resize (`ore-textarea`, `ore-message-composer`) instead of each reimplementing it.\n *\n * Owns only height — manual-resize cursor/direction is a per-component styling concern, not\n * shared behavior, so it stays local to whichever component renders a resize handle.\n *\n * @example\n * ```ts\n * const autoResize = createAutoResize({ enabled: props['auto-resize'] });\n *\n * onElement(textareaRef, (el) => autoResize.wire(el));\n * // after a programmatic value change that doesn't fire a native `input` event:\n * autoResize.recompute();\n * ```\n */\nexport const createAutoResize = (options: AutoResizeOptions = {}): AutoResizeControl => {\n let wiredEl: HTMLTextAreaElement | null = null;\n\n const recompute = (): void => {\n if (!wiredEl || options.enabled?.value === false) return;\n\n wiredEl.style.height = 'auto';\n wiredEl.style.height = `${wiredEl.scrollHeight}px`;\n };\n\n const wire = (el: HTMLTextAreaElement): (() => void) => {\n wiredEl = el;\n el.addEventListener('input', recompute);\n\n // Deferred a frame: right after mount, the browser hasn't necessarily finished laying out\n // the textarea yet, so a synchronous `scrollHeight` read here can be stale — often reading\n // as 0 and collapsing the field until the next real `input` event happens to correct it.\n // `ore-textarea` has always worked around this locally with its own extra `requestAnimationFrame`\n // call; folding the deferral into `wire()` itself means every consumer gets it for free.\n requestAnimationFrame(recompute);\n\n return () => {\n el.removeEventListener('input', recompute);\n\n if (wiredEl === el) wiredEl = null;\n };\n };\n\n return { recompute, wire };\n};\n"],"mappings":";AA8BA,IAAa,KAAoB,IAA6B,CAAC,MAAyB;CACtF,IAAI,IAAsC,MAEpC,UAAwB;EACxB,
|
|
1
|
+
{"version":3,"file":"auto-resize.js","names":[],"sources":["../../src/core/auto-resize.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nexport type AutoResizeOptions = {\n /** Gates growth; omit for an always-on composer field, or pass a signal for a toggleable `auto-resize` attribute. */\n enabled?: Readable<boolean | undefined>;\n};\n\nexport type AutoResizeControl = {\n /** Recomputes height from the wired element's current content. No-ops when `enabled` is false or nothing is wired. */\n recompute: () => void;\n /** Wire onto the raw `<textarea>` when it mounts. Returns a detach function to call on unmount. */\n wire: (el: HTMLTextAreaElement) => () => void;\n};\n\n/**\n * Grows a `<textarea>`'s height to fit its content, shared by every component that offers\n * auto-resize (`ore-textarea`, `ore-message-composer`) instead of each reimplementing it.\n *\n * Owns only height — manual-resize cursor/direction is a per-component styling concern, not\n * shared behavior, so it stays local to whichever component renders a resize handle.\n *\n * @example\n * ```ts\n * const autoResize = createAutoResize({ enabled: props['auto-resize'] });\n *\n * onElement(textareaRef, (el) => autoResize.wire(el));\n * // after a programmatic value change that doesn't fire a native `input` event:\n * autoResize.recompute();\n * ```\n */\nexport const createAutoResize = (options: AutoResizeOptions = {}): AutoResizeControl => {\n let wiredEl: HTMLTextAreaElement | null = null;\n\n const recompute = (): void => {\n if (!wiredEl || options.enabled?.value === false) return;\n\n wiredEl.style.height = 'auto';\n wiredEl.style.height = `${wiredEl.scrollHeight}px`;\n };\n\n const wire = (el: HTMLTextAreaElement): (() => void) => {\n wiredEl = el;\n el.addEventListener('input', recompute);\n\n // Deferred a frame: right after mount, the browser hasn't necessarily finished laying out\n // the textarea yet, so a synchronous `scrollHeight` read here can be stale — often reading\n // as 0 and collapsing the field until the next real `input` event happens to correct it.\n // `ore-textarea` has always worked around this locally with its own extra `requestAnimationFrame`\n // call; folding the deferral into `wire()` itself means every consumer gets it for free.\n requestAnimationFrame(recompute);\n\n return () => {\n el.removeEventListener('input', recompute);\n\n if (wiredEl === el) wiredEl = null;\n };\n };\n\n return { recompute, wire };\n};\n"],"mappings":";AA8BA,IAAa,KAAoB,IAA6B,CAAC,MAAyB;CACtF,IAAI,IAAsC,MAEpC,UAAwB;EACxB,AAAC,KAAW,EAAQ,SAAS,UAAU,OAE3C,EAAQ,MAAM,SAAS,QACvB,EAAQ,MAAM,SAAS,GAAG,EAAQ,aAAa;CACjD;CAoBA,OAAO;EAAE;EAAW,OAlBN,OACZ,IAAU,GACV,EAAG,iBAAiB,SAAS,CAAS,GAOtC,sBAAsB,CAAS,SAElB;GAGX,AAFA,EAAG,oBAAoB,SAAS,CAAS,GAErC,MAAY,MAAI,IAAU;EAChC;CAGuB;AAC3B"}
|
package/dist/core/field-base.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../_dev.cjs");let e=require("@vielzeug/ore"),t=require("@vielzeug/ripple");var n=e=>(0,t.computed)(()=>({errorText:e.error?.value??``,helperText:e.helper?.value??``})),r=e=>(0,t.computed)(()=>{let t=e.value?.value??``,n=e.maxLength?.value,r=Number(n),i=Number.isFinite(r)&&r>0?r:null,a=i!==null,o=a?`${t.length} / ${i}`:``,s=a?t.length/i:0;return{counterAtLimit:a?s>=1:!1,counterNearLimit:a?s>=.9&&s<1:!1,counterText:o}}),i=(e,t=`counter`)=>e?e.counterAtLimit?`${t} at-limit`:e.counterNearLimit?`${t} near-limit`:t:t;function a(){let e=!1;return{clear:()=>{e=!1},get isDirty(){return e},markDirty:()=>{e=!0}}}var o=r=>{let i=(0,t.computed)(()=>!!r.disabled?.value),a=(0,e.
|
|
1
|
+
require("../_dev.cjs");let e=require("@vielzeug/ore"),t=require("@vielzeug/ripple");var n=e=>(0,t.computed)(()=>({errorText:e.error?.value??``,helperText:e.helper?.value??``})),r=e=>(0,t.computed)(()=>{let t=e.value?.value??``,n=e.maxLength?.value,r=Number(n),i=Number.isFinite(r)&&r>0?r:null,a=i!==null,o=a?`${t.length} / ${i}`:``,s=a?t.length/i:0;return{counterAtLimit:a?s>=1:!1,counterNearLimit:a?s>=.9&&s<1:!1,counterText:o}}),i=(e,t=`counter`)=>e?e.counterAtLimit?`${t} at-limit`:e.counterNearLimit?`${t} near-limit`:t:t;function a(){let e=!1;return{clear:()=>{e=!1},get isDirty(){return e},markDirty:()=>{e=!0}}}var o=r=>{let i=(0,t.computed)(()=>!!r.disabled?.value),a=(0,e.createId)(`helper`),o=(0,e.createId)(`error`),s=n({error:r.error,helper:r.helper}),c=(0,t.computed)(()=>s.value.errorText||s.value.helperText?a:null),l=(0,t.computed)(()=>s.value.errorText?o:null),u=(0,t.computed)(()=>s.value.errorText?`true`:null),d=null;return{ariaDescribedBy:c,ariaErrorMessage:l,ariaInvalid:u,assistiveId:a,attachFormField:e=>{d=e},disabled:i,errorId:o,errorText:(0,t.computed)(()=>s.value.errorText),helperText:(0,t.computed)(()=>s.value.helperText),triggerValidation:e=>{r.validateOn?.value===e&&d&&d.reportValidity()}}},s=n=>{let r=n.id??(0,e.createId)(n.prefix??`field`),i=(0,e.createId)(`label`),a=n.label??(0,t.computed)(()=>void 0),o=n.hasLabel??(0,t.computed)(()=>!!a.value);return{ariaLabelledBy:(0,t.computed)(()=>o.value?i:null),fieldId:r,labelId:i,labelVisible:o}},c=e=>({...o(e),...s(e)});exports.counterClassName=i,exports.createAssistiveState=o,exports.createCounterState=r,exports.createDirtyTracker=a,exports.createErrorHelperState=n,exports.createField=c,exports.createLabelState=s;
|
|
2
2
|
//# sourceMappingURL=field-base.cjs.map
|