@olundot/ui 0.12.0 → 0.14.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/CHANGELOG.md +97 -0
- package/README.md +1 -1
- package/dist/index.d.ts +65 -50
- package/dist/index.js +318 -257
- package/dist/tokens.css +9 -4
- package/package.json +12 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,102 @@
|
|
|
1
1
|
# @olundot/ui
|
|
2
2
|
|
|
3
|
+
## 0.14.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- DataTable: wrap the loading skeleton and empty state in `role="rowgroup"` / `role="row"` / `role="cell"` structure so `role="table"` only has permitted children — fixes the `aria-required-children` violation (WCAG 1.3.1, axe Critical). Same pattern the data rows already used; visuals and `data-slot` markers are unchanged. (#56, #57)
|
|
8
|
+
- DetailLayout: wire tab triggers to their panels with a real `tab`/`tabpanel` contract — `aria-controls` targets, `role="tabpanel"` panels (including wrapped panel children), and stable panel ids. Public API is unchanged. (#59, #60)
|
|
9
|
+
|
|
10
|
+
This is a compatibility-preserving accessibility stabilization release: no public API or visual contract changes from 0.13.0.
|
|
11
|
+
|
|
12
|
+
## 0.13.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- 0f4ad55: Card: promote `interactive` from a variant to an orthogonal boolean prop (breaking)
|
|
17
|
+
|
|
18
|
+
`interactive` is removed from the `variant` enum and becomes a standalone `interactive?: boolean` prop. A clickable card can now combine with any resting surface — `default`, `elevated`, or `notice` — whereas the old `variant="interactive"` was mutually exclusive with those.
|
|
19
|
+
|
|
20
|
+
- **Before:** `<Card variant="interactive">`
|
|
21
|
+
- **After:** `<Card interactive>` (and now also `<Card variant="notice" interactive>`, `<Card variant="elevated" interactive>`).
|
|
22
|
+
|
|
23
|
+
Interactive hover lifts the shadow one step above the variant's resting depth: default/notice rest at `--shadow-2` → hover `--shadow-4`; elevated rests at `--shadow-4` → hover `--shadow-8`. The pointer cursor, hover border (`--border-strong`) / background (`--action-hover`), and neutral focus-ring (`--focus-ring`) are unchanged. `selected` / `disabled` relationships are unchanged.
|
|
24
|
+
|
|
25
|
+
`notice`'s accent border is retained; it is now documented under accent rationing role ③ (read-only emphasis context only), not treated as an exception.
|
|
26
|
+
|
|
27
|
+
- 8a0bfe3: Align Card with the v0.14 flattened surface model (breaking-visual)
|
|
28
|
+
|
|
29
|
+
After v0.14 flattening (card fill == page background), Card was the one component still leaning on removed lift affordances. Its rest/selected/focus handoff is now brought back in line. Public API (`variant`, `surface`, `selected`, `disabled`, slots) is unchanged — only rendered classes/visuals change.
|
|
30
|
+
|
|
31
|
+
- **Rest edge/radius:** base border `--border-subtle` → `--border` (0.10 alpha) and corner `--radius-md` (8px) → `--radius-lg` (12px, the "cards" radius). The `default` variant now carries a resting `--shadow-2` so a flat card still reads as a bounded surface.
|
|
32
|
+
- **Elevated:** `--shadow-2` → `--shadow-4`, keeping its meaning as the more-raised card now that `default` owns `--shadow-2`.
|
|
33
|
+
- **Selected:** fill `--bg-canvas` (a lift that vanished under flattening) → `--action-selected`, the same neutral surface-lift used by DataTable/TreeView selected rows; `--border-strong` retained.
|
|
34
|
+
- **Focus:** `interactive` focus drops the accent border + lime glow (`--border-accent` + `--glow-sm`) for the house neutral focus-ring convention (`--focus-ring` border + `0 0 0 1px --focus-ring` ring), matching Input. The dark `hover` accent glow is also removed (hover = `--border-strong` + `--shadow-2`), honoring accent rationing (accent is never used for action/focus surfaces).
|
|
35
|
+
|
|
36
|
+
`notice` (accent border) is unchanged.
|
|
37
|
+
|
|
38
|
+
- dca4628: Remove DataTable's built-in selection bar; consolidate bulk actions on BulkActionBar (breaking)
|
|
39
|
+
|
|
40
|
+
DataTable now exposes a single bulk-action surface. The internal top selection strip is deleted and all bulk actions move to the floating bottom `BulkActionBar` — matching the "one batch-action surface, no persistent chrome" baseline.
|
|
41
|
+
|
|
42
|
+
**Breaking — DataTable:**
|
|
43
|
+
|
|
44
|
+
- Removed the `selectionBar` (`'top' | 'none'`) and `bulkActions` props, the `DataTableBulkAction` type/export, and the built-in `data-slot="data-table-selection-bar"` strip (which always reserved a 48px row and showed a "선택된 행 없음" placeholder).
|
|
45
|
+
- **Kept** the selection mechanism: `selectable`, `selectedIds`, `onSelectionChange`, header select-all (indeterminate) + per-row checkboxes. The selected-count announcement is preserved as a visually-hidden `aria-live` region (`data-slot="data-table-selection-status"`), so there is no accessibility regression.
|
|
46
|
+
- Migration: drop `bulkActions`/`selectionBar` and render a sibling `<BulkActionBar count={selectedIds.size} onClear={…} actions={…} />`. See `docs/MIGRATION-0.13.0-to-0.14.0.md` §5.
|
|
47
|
+
|
|
48
|
+
**BulkActionBar hardening:**
|
|
49
|
+
|
|
50
|
+
- Bottom offset now respects the iOS safe area: `bottom: calc(var(--space-4) + env(safe-area-inset-bottom))`.
|
|
51
|
+
- Subtle entrance motion when it appears (`olun-bulk-action-bar-in`: translateY 8px + fade, `var(--dur-fast) var(--ease-out)`), opted out under `prefers-reduced-motion` via `motion-reduce:animate-none` + the global reduced-motion guard.
|
|
52
|
+
- Do not use on the same screen as `ActionFooter` — both occupy the bottom and overlap at `z-index` 1100 (documented, not enforced in code).
|
|
53
|
+
|
|
54
|
+
- 676476c: Align internal token references to v0.14 canonical names
|
|
55
|
+
|
|
56
|
+
`@olundot/ui` now references the canonical v0.14 token names directly instead of the pre-v0.14 aliases that survive in `@olundot/tokens`' compat layer. Public component APIs are unchanged; only the token names emitted in class strings/styles change.
|
|
57
|
+
|
|
58
|
+
- **Accent:** `--accent-fg` → `--accent`, `--accent-solid` → `--accent-pop`, `--accent-on-solid` → `--accent-on-fill` (button, chip, icon-button); two-tier-badge's legacy `text-accent-fg` utility class → `text-[var(--accent)]`.
|
|
59
|
+
- **Elevation:** `shadow-[var(--elevation-{1,2,4})]` → `shadow-[var(--shadow-{1,2,4})]` (card, confirm-dialog, form-modal, info-modal, mode-toggle, popover, sheet-drawer, toast, theme-fab); legacy `shadow-elevation-{2,8}` utility classes → `shadow-{2,8}` (dropdown-menu, dialog).
|
|
60
|
+
- **Motion:** `--duration-fast` → `--dur-fast` and `theme.ts`'s `var(--duration-${d})` template → an explicit `--dur-*`/literal mapping (mode-toggle, tabs, tree-view, `lib/theme.ts`). Sheet's public `easing` prop keeps its `standard/decel/accel/sharp/bounce` surface; its internal map now uses canonical `--ease-standard/--ease-in/--ease-out`, with `decel`/`sharp` still referencing the compat-frozen `--easing-decel`/`--easing-sharp` beziers (no canonical equivalent).
|
|
61
|
+
- **Semantic:** the `tokens.css` `@theme` block maps `--color-semantic-*` off `--semantic-*-fg` (was `--semantic-*`).
|
|
62
|
+
|
|
63
|
+
The canonical motion tokens carry the intended v0.14 re-tuning (fast/base/slow 150/200/300 → 120/180/260ms), so transition timings shift accordingly.
|
|
64
|
+
|
|
65
|
+
- 52714f9: Rewrite TwoTierBadge to the handoff horizontal-pill model (breaking)
|
|
66
|
+
|
|
67
|
+
TwoTierBadge moves from a vertical two-box stack with dual independent intents to the design-canonical **horizontal two-segment pill**: a `primary` lead segment and an optional `secondary` qualifier split by a hairline vertical divider, clipped to a full-round pill. It now shares the Badge/StatusBadge/Chip grammar.
|
|
68
|
+
|
|
69
|
+
**Breaking API change:**
|
|
70
|
+
|
|
71
|
+
- **Removed:** `primaryIntent`, `secondaryIntent`, `align`, `primaryClassName`, `secondaryClassName`, the `brand`/`muted` intents, and the `twoTierBadgeVariants` / `twoTierBadgeLineVariants` / `TwoTierBadgeIntent` exports.
|
|
72
|
+
- **Added:** a single `tone` axis (`neutral` · `info` · `success` · `warning` · `error`) that colors the **lead segment only** — the qualifier always stays neutral, and the brand lime is never spent here (accent rationing). Plus `emphasis` (`subtle`/`strong`, mirrors StatusBadge), `size` (`xs`/`sm`/`md`), and `showDot`. New type exports: `TwoTierBadgeTone`, `TwoTierBadgeEmphasis`, `TwoTierBadgeSize`.
|
|
73
|
+
- The root element is now a `<span>` (was `<div>`); `data-slot` names are unchanged (`two-tier-badge` / `-primary` / `-secondary`).
|
|
74
|
+
|
|
75
|
+
### Before
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
<TwoTierBadge
|
|
79
|
+
primary="예약"
|
|
80
|
+
secondary="검토 필요"
|
|
81
|
+
primaryIntent="brand"
|
|
82
|
+
secondaryIntent="warning"
|
|
83
|
+
/>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### After
|
|
87
|
+
|
|
88
|
+
```tsx
|
|
89
|
+
<TwoTierBadge primary="예약" tone="info" secondary="검토 필요" />
|
|
90
|
+
<TwoTierBadge primary="반려" tone="error" emphasis="strong" secondary="중복 문항" />
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Map old intents to tone: `brand`→(drop, use `info`/neutral — lime is never used), `muted`→`neutral`, `danger`→`error`, `success`/`warning`/`info` unchanged. The old `secondaryIntent` has no equivalent — the qualifier is always neutral by design.
|
|
94
|
+
|
|
95
|
+
### Patch Changes
|
|
96
|
+
|
|
97
|
+
- Updated dependencies [966c3f6]
|
|
98
|
+
- @olundot/tokens@0.14.0
|
|
99
|
+
|
|
3
100
|
## 0.12.0
|
|
4
101
|
|
|
5
102
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -36,4 +36,4 @@ This beta package is extracted from the OLUN CBT/LMS shared UI implementation. A
|
|
|
36
36
|
|
|
37
37
|
## Accent Contract
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
Primary and default buttons are monochrome: pair `--primary` for the background and border with `--primary-fg` for text and icons. Brand and opt-in accent fills use the canonical `--accent-pop` + `--accent-on-fill` pair. The pre-v0.14 names `--accent-solid` and `--accent-on-solid` remain deprecated compatibility aliases and must not be used in new component source.
|
package/dist/index.d.ts
CHANGED
|
@@ -32,8 +32,8 @@ declare function useOlunTheme(): UseOlunThemeValue;
|
|
|
32
32
|
type SurfaceLevel = "surface" | "canvas" | "raised";
|
|
33
33
|
|
|
34
34
|
declare const buttonVariants: (props?: ({
|
|
35
|
-
variant?: "
|
|
36
|
-
size?: "xs" | "sm" | "md" | "lg" | "xl" | "
|
|
35
|
+
variant?: "default" | "primary" | "outline" | "ghost" | "danger" | "emergency" | "subtle" | "destructive" | "secondary" | "link" | null | undefined;
|
|
36
|
+
size?: "default" | "xs" | "sm" | "md" | "lg" | "xl" | "icon" | "icon-xs" | null | undefined;
|
|
37
37
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
38
38
|
type ButtonVariant = NonNullable<VariantProps<typeof buttonVariants>['variant']>;
|
|
39
39
|
type ButtonSize = NonNullable<VariantProps<typeof buttonVariants>['size']>;
|
|
@@ -54,7 +54,7 @@ type CopyButtonProps = Omit<ButtonProps, 'children' | 'leadingIcon' | 'loading'
|
|
|
54
54
|
variant?: ButtonVariant;
|
|
55
55
|
duration?: number;
|
|
56
56
|
};
|
|
57
|
-
declare const CopyButton: React.ForwardRefExoticComponent<Omit<ButtonProps, "
|
|
57
|
+
declare const CopyButton: React.ForwardRefExoticComponent<Omit<ButtonProps, "size" | "variant" | "leadingIcon" | "trailingIcon" | "loading" | "children"> & {
|
|
58
58
|
value: string;
|
|
59
59
|
label?: React.ReactNode;
|
|
60
60
|
copiedLabel?: React.ReactNode;
|
|
@@ -70,7 +70,7 @@ declare const inputVariants: (props?: ({
|
|
|
70
70
|
surface?: SurfaceLevel | null | undefined;
|
|
71
71
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
72
72
|
declare const inputMessageVariants: (props?: ({
|
|
73
|
-
state?: "
|
|
73
|
+
state?: "default" | "error" | "success" | null | undefined;
|
|
74
74
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
75
75
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
76
76
|
type InputState = NonNullable<VariantProps<typeof inputMessageVariants>["state"]>;
|
|
@@ -119,11 +119,11 @@ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "
|
|
|
119
119
|
declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
120
120
|
|
|
121
121
|
declare const fileUploadZoneVariants: (props?: ({
|
|
122
|
-
size?: "
|
|
122
|
+
size?: "default" | "compact" | null | undefined;
|
|
123
123
|
surface?: SurfaceLevel | null | undefined;
|
|
124
124
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
125
125
|
declare const fileUploadIconVariants: (props?: ({
|
|
126
|
-
size?: "
|
|
126
|
+
size?: "default" | "compact" | null | undefined;
|
|
127
127
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
128
128
|
interface FileUploadZoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, "onChange">, VariantProps<typeof fileUploadZoneVariants> {
|
|
129
129
|
accept?: string;
|
|
@@ -166,7 +166,7 @@ declare const textareaVariants: (props?: ({
|
|
|
166
166
|
surface?: SurfaceLevel | null | undefined;
|
|
167
167
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
168
168
|
declare const textareaMessageVariants: (props?: ({
|
|
169
|
-
state?: "
|
|
169
|
+
state?: "default" | "error" | "success" | null | undefined;
|
|
170
170
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
171
171
|
type TextareaState = NonNullable<VariantProps<typeof textareaMessageVariants>["state"]>;
|
|
172
172
|
/** Canonical size type (0.2.0+). Use `size` prop with these values. */
|
|
@@ -221,7 +221,7 @@ declare const selectVariants: (props?: ({
|
|
|
221
221
|
surface?: SurfaceLevel | null | undefined;
|
|
222
222
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
223
223
|
declare const selectMessageVariants: (props?: ({
|
|
224
|
-
state?: "
|
|
224
|
+
state?: "default" | "error" | "success" | null | undefined;
|
|
225
225
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
226
226
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
227
227
|
type SelectState = NonNullable<VariantProps<typeof selectMessageVariants>["state"]>;
|
|
@@ -416,14 +416,15 @@ declare function evaluatePermission(permission: string, state?: PermissionEvalua
|
|
|
416
416
|
declare function PermissionGuard({ permission, children, fallback, scope, permissions, disabledReason, }: PermissionGuardProps): react_jsx_runtime.JSX.Element | null;
|
|
417
417
|
|
|
418
418
|
declare const cardBaseVariants: (props?: ({
|
|
419
|
-
variant?: "default" | "elevated" | "notice" |
|
|
419
|
+
variant?: "default" | "elevated" | "notice" | null | undefined;
|
|
420
|
+
interactive?: boolean | null | undefined;
|
|
420
421
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
421
422
|
type CardVariant = NonNullable<VariantProps<typeof cardBaseVariants>["variant"]>;
|
|
422
423
|
interface CardVariantOptions extends VariantProps<typeof cardBaseVariants> {
|
|
423
424
|
surface?: SurfaceLevel;
|
|
424
425
|
className?: string;
|
|
425
426
|
}
|
|
426
|
-
declare function cardVariants({ variant, surface, className }?: CardVariantOptions): string;
|
|
427
|
+
declare function cardVariants({ variant, surface, interactive, className }?: CardVariantOptions): string;
|
|
427
428
|
interface CardProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardBaseVariants> {
|
|
428
429
|
/**
|
|
429
430
|
* Background level for the card surface. When omitted, `variant` chooses the
|
|
@@ -431,6 +432,12 @@ interface CardProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<t
|
|
|
431
432
|
* Selected and disabled states take precedence.
|
|
432
433
|
*/
|
|
433
434
|
surface?: SurfaceLevel;
|
|
435
|
+
/**
|
|
436
|
+
* Clickable affordance — orthogonal to `variant`. Adds hover lift (shadow +
|
|
437
|
+
* border-strong), a pointer cursor and the neutral focus-ring. Combine with
|
|
438
|
+
* any `variant` (default/elevated/notice).
|
|
439
|
+
*/
|
|
440
|
+
interactive?: boolean;
|
|
434
441
|
selected?: boolean;
|
|
435
442
|
disabled?: boolean;
|
|
436
443
|
}
|
|
@@ -691,11 +698,6 @@ interface DataTableSort {
|
|
|
691
698
|
key: string;
|
|
692
699
|
dir: 'asc' | 'desc';
|
|
693
700
|
}
|
|
694
|
-
interface DataTableBulkAction {
|
|
695
|
-
label: React.ReactNode;
|
|
696
|
-
onClick: (ids: Set<string>) => void;
|
|
697
|
-
variant?: 'default' | 'destructive';
|
|
698
|
-
}
|
|
699
701
|
interface DataTableProps<T> extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>, VariantProps<typeof dataTableVariants> {
|
|
700
702
|
columns: DataTableColumn<T>[];
|
|
701
703
|
data: T[];
|
|
@@ -703,19 +705,17 @@ interface DataTableProps<T> extends Omit<React.HTMLAttributes<HTMLDivElement>, '
|
|
|
703
705
|
selectable?: boolean;
|
|
704
706
|
selectedIds?: Set<string>;
|
|
705
707
|
onSelectionChange?: (ids: Set<string>) => void;
|
|
706
|
-
selectionBar?: 'top' | 'none';
|
|
707
708
|
activeRowId?: string;
|
|
708
709
|
onRowContextMenu?: (rowId: string, event: React.MouseEvent) => void;
|
|
709
710
|
sortBy?: DataTableSort;
|
|
710
711
|
onSortChange?: (key: string, dir: 'asc' | 'desc' | null) => void;
|
|
711
712
|
loading?: boolean;
|
|
712
713
|
emptyState?: React.ReactNode;
|
|
713
|
-
bulkActions?: DataTableBulkAction[];
|
|
714
714
|
rowHref?: (row: T) => string;
|
|
715
715
|
skeletonRowCount?: number;
|
|
716
716
|
/**
|
|
717
|
-
* Background level for the table container. Header, selected rows,
|
|
718
|
-
*
|
|
717
|
+
* Background level for the table container. Header, selected rows, loading,
|
|
718
|
+
* and empty states keep their own state styling.
|
|
719
719
|
*/
|
|
720
720
|
surface?: SurfaceLevel;
|
|
721
721
|
}
|
|
@@ -794,7 +794,7 @@ interface BulkActionBarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
794
794
|
* { key: "del", label: "삭제", variant: "destructive", onClick: confirmDelete },
|
|
795
795
|
* ]} />
|
|
796
796
|
*/
|
|
797
|
-
declare function BulkActionBar({ count, actions, onClear, emptyHint, style, ...props }: BulkActionBarProps): react_jsx_runtime.JSX.Element | null;
|
|
797
|
+
declare function BulkActionBar({ count, actions, onClear, emptyHint, className, style, ...props }: BulkActionBarProps): react_jsx_runtime.JSX.Element | null;
|
|
798
798
|
|
|
799
799
|
declare const Dialog: React.FC<Dialog$1.DialogProps>;
|
|
800
800
|
declare const DialogTrigger: React.ForwardRefExoticComponent<Dialog$1.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -953,23 +953,38 @@ interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
|
953
953
|
}
|
|
954
954
|
declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
955
955
|
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
intent?: "brand" | "muted" | "warning" | "success" | "neutral" | "danger" | null | undefined;
|
|
962
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
963
|
-
type TwoTierBadgeIntent = NonNullable<VariantProps<typeof twoTierBadgeLineVariants>["intent"]>;
|
|
964
|
-
interface TwoTierBadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof twoTierBadgeVariants> {
|
|
956
|
+
type TwoTierBadgeTone = 'neutral' | 'info' | 'success' | 'warning' | 'error';
|
|
957
|
+
type TwoTierBadgeEmphasis = 'subtle' | 'strong';
|
|
958
|
+
type TwoTierBadgeSize = 'xs' | 'sm' | 'md';
|
|
959
|
+
interface TwoTierBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
960
|
+
/** Lead facet — the headline segment (type, state, label). */
|
|
965
961
|
primary: React.ReactNode;
|
|
962
|
+
/** Trailing qualifier segment (source, reason, count). Omit for a single-segment badge. */
|
|
966
963
|
secondary?: React.ReactNode;
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
964
|
+
/** Semantic role — colors the LEAD segment only; the qualifier stays neutral. Brand lime is never used. */
|
|
965
|
+
tone?: TwoTierBadgeTone;
|
|
966
|
+
/** Weight axis (mirrors StatusBadge): `subtle` outlined pill, `strong` tinted lead fill. */
|
|
967
|
+
emphasis?: TwoTierBadgeEmphasis;
|
|
968
|
+
/** xs · sm (default) · md — padding + text + dot scale. */
|
|
969
|
+
size?: TwoTierBadgeSize;
|
|
970
|
+
/** Leading status dot on the lead segment (default false). Hollow ring for neutral. */
|
|
971
|
+
showDot?: boolean;
|
|
971
972
|
}
|
|
972
|
-
|
|
973
|
+
/**
|
|
974
|
+
* OLUN TwoTierBadge — carries TWO related facets in ONE horizontal pill: a
|
|
975
|
+
* `primary` lead segment and an optional `secondary` qualifier, split by a
|
|
976
|
+
* hairline vertical divider (유형│출처, 상태│사유, 완료│312명). Shares the
|
|
977
|
+
* Badge/StatusBadge/Chip grammar: full-pill shape, `--font-sans`, the same 5
|
|
978
|
+
* semantic roles (`tone`) and the `subtle`/`strong` emphasis axis. `tone` colors
|
|
979
|
+
* the lead segment only; the qualifier stays neutral and the brand lime is never
|
|
980
|
+
* spent here. With no `secondary` it degrades to a plain semantic pill — prefer
|
|
981
|
+
* StatusBadge for pure state. Forwards its ref.
|
|
982
|
+
*
|
|
983
|
+
* @example
|
|
984
|
+
* <TwoTierBadge primary="객관식" secondary="순환기내과" />
|
|
985
|
+
* <TwoTierBadge primary="반려" tone="error" emphasis="strong" secondary="중복 문항" />
|
|
986
|
+
*/
|
|
987
|
+
declare const TwoTierBadge: React.ForwardRefExoticComponent<TwoTierBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
973
988
|
|
|
974
989
|
type StatusBadgeStatus = 'active' | 'archived' | 'success' | 'warning' | 'error' | 'info' | 'pending';
|
|
975
990
|
type StatusBadgeEmphasis = 'subtle' | 'strong';
|
|
@@ -1005,12 +1020,12 @@ declare const NotificationBadge: React.ForwardRefExoticComponent<NotificationBad
|
|
|
1005
1020
|
|
|
1006
1021
|
declare const chipVariants: (props?: ({
|
|
1007
1022
|
variant?: "filter" | "choice" | "removable" | "status-filter" | null | undefined;
|
|
1008
|
-
tone?: "
|
|
1023
|
+
tone?: "accent" | "danger" | "success" | "warning" | "neutral" | "muted" | null | undefined;
|
|
1009
1024
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
1010
1025
|
pressed?: boolean | null | undefined;
|
|
1011
1026
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1012
1027
|
declare const chipCountVariants: (props?: ({
|
|
1013
|
-
tone?: "
|
|
1028
|
+
tone?: "accent" | "danger" | "success" | "warning" | "neutral" | "muted" | null | undefined;
|
|
1014
1029
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
1015
1030
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1016
1031
|
type ChipVariant = NonNullable<VariantProps<typeof chipVariants>["variant"]>;
|
|
@@ -1249,7 +1264,7 @@ interface ActionFooterProps extends Omit<React.HTMLAttributes<HTMLDivElement>, '
|
|
|
1249
1264
|
declare const ActionFooter: React.ForwardRefExoticComponent<ActionFooterProps & React.RefAttributes<HTMLDivElement>>;
|
|
1250
1265
|
|
|
1251
1266
|
declare const toastVariants: (props?: ({
|
|
1252
|
-
variant?: "
|
|
1267
|
+
variant?: "default" | "error" | "success" | "info" | "warning" | null | undefined;
|
|
1253
1268
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1254
1269
|
declare const toastViewportVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
1255
1270
|
type ToastVariant = NonNullable<VariantProps<typeof toastVariants>['variant']>;
|
|
@@ -1303,19 +1318,19 @@ interface ToastProviderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
1303
1318
|
declare function ToastProvider({ children, maxToasts, className, ...props }: ToastProviderProps): react_jsx_runtime.JSX.Element;
|
|
1304
1319
|
|
|
1305
1320
|
declare const otpFieldVariants: (props?: ({
|
|
1306
|
-
size?: "
|
|
1321
|
+
size?: "default" | "compact" | null | undefined;
|
|
1307
1322
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1308
1323
|
declare const otpFieldGroupVariants: (props?: ({
|
|
1309
|
-
size?: "
|
|
1324
|
+
size?: "default" | "compact" | null | undefined;
|
|
1310
1325
|
fluid?: boolean | null | undefined;
|
|
1311
1326
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1312
1327
|
declare const otpCellVariants: (props?: ({
|
|
1313
|
-
size?: "
|
|
1328
|
+
size?: "default" | "compact" | null | undefined;
|
|
1314
1329
|
fluid?: boolean | null | undefined;
|
|
1315
1330
|
surface?: SurfaceLevel | null | undefined;
|
|
1316
1331
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1317
1332
|
declare const otpFieldMessageVariants: (props?: ({
|
|
1318
|
-
state?: "
|
|
1333
|
+
state?: "default" | "error" | null | undefined;
|
|
1319
1334
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1320
1335
|
type OTPFieldSize = NonNullable<VariantProps<typeof otpCellVariants>["size"]>;
|
|
1321
1336
|
interface OTPFieldProps extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, "onChange" | "children" | "defaultValue" | "value">, VariantProps<typeof otpFieldVariants> {
|
|
@@ -1372,11 +1387,11 @@ declare const checkboxBoxVariants: (props?: ({
|
|
|
1372
1387
|
size?: "sm" | "md" | null | undefined;
|
|
1373
1388
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1374
1389
|
declare const checkboxGroupItemVariants: (props?: ({
|
|
1375
|
-
appearance?: "
|
|
1390
|
+
appearance?: "plain" | "card" | null | undefined;
|
|
1376
1391
|
density?: "compact" | "comfortable" | null | undefined;
|
|
1377
1392
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1378
1393
|
declare const checkboxGroupBoxVariants: (props?: ({
|
|
1379
|
-
appearance?: "
|
|
1394
|
+
appearance?: "plain" | "card" | null | undefined;
|
|
1380
1395
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1381
1396
|
type CheckboxSize = NonNullable<VariantProps<typeof checkboxBoxVariants>["size"]>;
|
|
1382
1397
|
type CheckboxCheckedState = React.ComponentProps<typeof Checkbox$1.Root>["checked"];
|
|
@@ -1401,7 +1416,7 @@ interface CheckboxProps extends Omit<React.ComponentPropsWithoutRef<typeof Check
|
|
|
1401
1416
|
declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>>;
|
|
1402
1417
|
|
|
1403
1418
|
declare const checkboxGroupVariants: (props?: ({
|
|
1404
|
-
appearance?: "
|
|
1419
|
+
appearance?: "plain" | "card" | null | undefined;
|
|
1405
1420
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
1406
1421
|
columns?: "one" | "two" | "three" | null | undefined;
|
|
1407
1422
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
@@ -1422,16 +1437,16 @@ interface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
1422
1437
|
declare const CheckboxGroup: React.ForwardRefExoticComponent<CheckboxGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
1423
1438
|
|
|
1424
1439
|
declare const radioGroupVariants: (props?: ({
|
|
1425
|
-
appearance?: "
|
|
1440
|
+
appearance?: "plain" | "card" | null | undefined;
|
|
1426
1441
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
1427
1442
|
columns?: "one" | "two" | "three" | null | undefined;
|
|
1428
1443
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1429
1444
|
declare const radioVariants: (props?: ({
|
|
1430
|
-
appearance?: "
|
|
1445
|
+
appearance?: "plain" | "card" | null | undefined;
|
|
1431
1446
|
density?: "compact" | "comfortable" | null | undefined;
|
|
1432
1447
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1433
1448
|
declare const radioControlVariants: (props?: ({
|
|
1434
|
-
appearance?: "
|
|
1449
|
+
appearance?: "plain" | "card" | null | undefined;
|
|
1435
1450
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1436
1451
|
type RadioGroupAppearance = NonNullable<VariantProps<typeof radioGroupVariants>["appearance"]>;
|
|
1437
1452
|
type RadioGroupColumns = NonNullable<VariantProps<typeof radioGroupVariants>["columns"]>;
|
|
@@ -1523,8 +1538,8 @@ declare function TreeView<T extends TreeNode>({ nodes, selectedId, selectionAria
|
|
|
1523
1538
|
/**
|
|
1524
1539
|
* OLUN 브랜드 로고.
|
|
1525
1540
|
*
|
|
1526
|
-
* - symbol: O 원형 테두리 + 우하단 accent-
|
|
1527
|
-
* - wordmark: "OLUN" + 마지막 "." 은 accent
|
|
1541
|
+
* - symbol: O 원형 테두리 + 우하단 accent-pop 작은 circle
|
|
1542
|
+
* - wordmark: "OLUN" + 마지막 "." 은 accent 색상
|
|
1528
1543
|
*
|
|
1529
1544
|
* 레퍼런스: apps/web/docs/wireframes/ref/shell-wireframe.html Topbar 브랜드 영역.
|
|
1530
1545
|
*/
|
|
@@ -1568,4 +1583,4 @@ interface OrganizationLogoProps extends Omit<SVGProps<SVGSVGElement>, "width" |
|
|
|
1568
1583
|
}
|
|
1569
1584
|
declare function OrganizationLogo({ organization, size, className, style, role, "aria-label": ariaLabel, "aria-hidden": ariaHidden, ...props }: OrganizationLogoProps): react_jsx_runtime.JSX.Element;
|
|
1570
1585
|
|
|
1571
|
-
export { ActionFooter, type ActionFooterAction, type ActionFooterProps, type ActionFooterStatus, Alert, type AlertEmphasis, type AlertProps, type AlertVariant, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, BulkActionBar, type BulkActionBarAction, type BulkActionBarProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardProse, CardTitle, type CardVariant, type CardVariantOptions, Checkbox, type CheckboxCheckedState, CheckboxGroup, type CheckboxGroupAppearance, type CheckboxGroupColumns, CheckboxGroupContext, type CheckboxGroupContextValue, type CheckboxGroupDensity, type CheckboxGroupOrientation, type CheckboxGroupProps, type CheckboxProps, type CheckboxSize, Chip, type ChipProps, type ChipSize, type ChipTone, type ChipVariant, ConfirmDialog, type ConfirmDialogProps, ContextMenu, type ContextMenuPosition, type ContextMenuProps, CopyButton, type CopyButtonProps, DataLayout, type DataLayoutProps, DataTable, type
|
|
1586
|
+
export { ActionFooter, type ActionFooterAction, type ActionFooterProps, type ActionFooterStatus, Alert, type AlertEmphasis, type AlertProps, type AlertVariant, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, BulkActionBar, type BulkActionBarAction, type BulkActionBarProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardProse, CardTitle, type CardVariant, type CardVariantOptions, Checkbox, type CheckboxCheckedState, CheckboxGroup, type CheckboxGroupAppearance, type CheckboxGroupColumns, CheckboxGroupContext, type CheckboxGroupContextValue, type CheckboxGroupDensity, type CheckboxGroupOrientation, type CheckboxGroupProps, type CheckboxProps, type CheckboxSize, Chip, type ChipProps, type ChipSize, type ChipTone, type ChipVariant, ConfirmDialog, type ConfirmDialogProps, ContextMenu, type ContextMenuPosition, type ContextMenuProps, CopyButton, type CopyButtonProps, DataLayout, type DataLayoutProps, DataTable, type DataTableColumn, type DataTableProps, type DataTableSort, DetailLayout, type DetailLayoutProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogEyebrow, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRawContent, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, type EmptyStateSize, type EmptyStateTone, type EmptyStateVariantOptions, ErrorState, type ErrorStateProps, FileUploadZone, type FileUploadZoneProps, FilterToolbar, type FilterToolbarProps, FormField, type FormFieldProps, type FormFieldRenderProps, FormLayout, type FormLayoutProps, type FormLayoutSection, FormModal, type FormModalProps, IconButton, type IconButtonBadgeTone, type IconButtonProps, type IconButtonSize, type IconButtonVariant, InfoModal, type InfoModalProps, InlineAlert, type InlineAlertProps, type InlineAlertSurface, Input, type InputProps, type InputSize, type InputSizeLegacy, type InputState, Label, type LabelProps, ModeToggle, type ModeToggleOption, type ModeToggleProps, NotificationBadge, type NotificationBadgePlacement, type NotificationBadgeProps, type NotificationBadgeSize, OTPField, type OTPFieldProps, type OTPFieldSize, OlunLogo, OlunSymbol, type OlunTheme, type OlunThemeDuration, type OlunThemeState, OrganizationLogo, type OrganizationLogoId, type OrganizationLogoProps, PageHeader, type PageHeaderProps, PageSizeSelect, type PageSizeSelectProps, type PageSizeSelectSize, Pagination, type PaginationProps, type PaginationSize, PermissionContext, type PermissionEvaluator, type PermissionFallback, PermissionGuard, type PermissionGuardProps, PermissionProvider, type PermissionProviderProps, type PermissionScope, type PermissionState, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, Progress, type ProgressProps, type ProgressStatus, Radio, RadioGroup, type RadioGroupAppearance, type RadioGroupColumns, type RadioGroupDensity, type RadioGroupOrientation, type RadioGroupProps, type RadioProps, ScrollArea, ScrollBar, SearchField, type SearchFieldProps, type SearchFieldSize, Select, type SelectAppearance, type SelectOption, type SelectProps, type SelectSize, type SelectState, type SelectVariant, type SemanticRole, Separator, type SetOlunThemeOptions, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetDrawer, type SheetDrawerProps, SheetFooter, SheetHeader, type SheetMotionConfig, type SheetMotionDuration, type SheetMotionEasing, type SheetMotionType, SheetTitle, SheetTrigger, Skeleton, type SkeletonProps, SkeletonRow, type SkeletonRowColumn, type SkeletonRowProps, SkeletonText, type SkeletonTextProps, Spinner, type SpinnerProps, StatusBadge, type StatusBadgeEmphasis, type StatusBadgeProps, type StatusBadgeSize, type StatusBadgeStatus, type SurfaceLevel, Switch, type SwitchProps, type TabItem, Tabs, TabsContent, type TabsProps, type TabsVariant, Textarea, type TextareaProps, type TextareaSize, type TextareaSizeLegacy, type TextareaState, ThemeFab, type ThemeFabProps, ThemeToggle, Toast, type ToastAction, type ToastItem, type ToastOptions, ToastProvider, ToastRoot, type ToastVariant, ToastViewport, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TreeItemRowVariantProps, type TreeItemState, type TreeNode, TreeView, type TreeViewProps, TwoTierBadge, type TwoTierBadgeEmphasis, type TwoTierBadgeProps, type TwoTierBadgeSize, type TwoTierBadgeTone, type UseOlunThemeValue, WizardLayout, type WizardLayoutProps, type WizardStep, type WizardStepState, actionFooterStatusVariants, actionFooterVariants, buttonVariants, cardVariants, checkboxBoxVariants, checkboxFieldVariants, checkboxGroupBoxVariants, checkboxGroupItemVariants, checkboxGroupVariants, checkboxRootVariants, checkboxVariants, chipCountVariants, chipVariants, cn, dataTableRowVariants, dataTableVariants, emptyStateIconVariants, emptyStateVariants, errorStateVariants, evaluatePermission, fileUploadIconVariants, fileUploadZoneVariants, formFieldControlStackClassName, formFieldDescriptionClassName, formFieldErrorClassName, formFieldLabelClassName, formFieldRequiredClassName, formFieldVariants, getOlunThemeState, getToastDuration, iconButtonBadgeVariants, iconButtonVariants, inputMessageVariants, inputVariants, limitToasts, modeToggleItemVariants, modeToggleVariants, notificationBadgeVariants, otpCellVariants, otpFieldGroupVariants, otpFieldMessageVariants, otpFieldVariants, paginationControlVariants, paginationVariants, radioControlVariants, radioGroupVariants, radioVariants, searchFieldInputVariants, searchFieldVariants, selectMessageVariants, selectVariants, setOlunTheme, skeletonVariants, spinnerVariants, tabsBadgeVariants, tabsListVariants, tabsRootVariants, tabsTriggerVariants, textareaMessageVariants, textareaVariants, toast, toastVariants, toastViewportVariants, treeItemRowVariants, treeViewVariants, useOlunTheme, usePermission };
|