@aracreate/arm-ui 3.6.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 ADDED
@@ -0,0 +1,170 @@
1
+ # ARM UI Library
2
+
3
+ The shared React component library for the ARM platform, published to npm as
4
+ [`@aracreate/arm-ui`](https://www.npmjs.com/package/@aracreate/arm-ui). It is the single
5
+ source of the platform's design system — 42 components plus the UnoCSS preset that carries the brand
6
+ scales — consumed by `arm-core-fe`, the calendar frontend and the admin frontend so all three look
7
+ like one product.
8
+
9
+ - Ships the components **and** the UnoCSS preset (`acPreset`) that generates their classes; a
10
+ consuming app installs both or the components render unstyled
11
+ - Purpose-built for ARM rather than general-purpose: the catalogue is calendar-, auth- and
12
+ dashboard-shaped (`SyncDetailsDialog`, `ImportCalendarsDialog`, `BigCalendarView`, `OtpVerifyStep`)
13
+ - Every component has a colocated test, and all 42 are covered by axe accessibility tests
14
+ - Storybook is the browsable catalogue and the place to develop a component in isolation
15
+
16
+ **This library is consumed as a pinned npm dependency, not a workspace link.** A change here has to
17
+ be published and the version bumped in each consuming app before it is visible to them — a library
18
+ change and a consumer change cannot land in one commit, and a new prop will compile silently against
19
+ the previously published types until the bump happens.
20
+
21
+ ## Stack
22
+
23
+ | Layer | Tool |
24
+ | --- | --- |
25
+ | Framework | React 19 (peer: `>=18`) |
26
+ | Bundler | `tsup` — ESM + CJS + `.d.ts` |
27
+ | Styling | UnoCSS, shipped as the `acPreset` preset and a pre-built `style.css` |
28
+ | Primitives | Radix (`@radix-ui/react-icons`, Radix Themes in consumers) |
29
+ | Calendar grid | `react-big-calendar`, with brand overrides shipped separately |
30
+ | Catalogue | Storybook |
31
+ | Tests | Vitest — two configs (components, Storybook) — plus axe accessibility tests |
32
+ | Release | semantic-release → npm |
33
+ | Language | TypeScript |
34
+ | Package manager | pnpm |
35
+
36
+ ## Architecture
37
+
38
+ ```text
39
+ src/
40
+ ├── index.ts ← Public entry — re-exports components, types, theme and class helpers
41
+ ├── components/ ← The 42 components, each with a colocated *.test.tsx
42
+ │ ├── index.ts ← Named exports; this file defines the public component API
43
+ │ ├── tokens.css ← Design tokens, shipped to consumers as /tokens.css
44
+ │ └── big-calendar-overrides.css ← react-big-calendar brand overrides, shipped separately
45
+ ├── preset.ts ← acPreset — wraps presetWind4 and adds the brand scales
46
+ ├── styles/ ← radix-brand-tokens.css, theme.css
47
+ ├── lib/ ← theme object, getColor, and the class-building helpers
48
+ ├── types/ ← Shared prop types (Size, Variant, polymorphic helpers)
49
+ └── stories/ ← Storybook stories
50
+ ```
51
+
52
+ ### Package exports
53
+
54
+ | Entry | Contents |
55
+ | --- | --- |
56
+ | `.` | Components, types, `theme`/`getColor`/`colors`, class helpers |
57
+ | `./preset` | `acPreset` for a consuming app's `uno.config.ts` |
58
+ | `./style.css` | Pre-built stylesheet — the alternative to scanning library sources |
59
+ | `./tokens.css` | Design tokens alone |
60
+ | `./big-calendar-overrides.css` | `react-big-calendar` brand overrides |
61
+
62
+ Only `dist/` is published (`files: ["dist"]`), so anything a consumer needs must be exported from
63
+ `src/index.ts` or emitted by the CSS build — a file that exists in `src/` but is not reachable
64
+ through an export does not ship.
65
+
66
+ ### The component catalogue
67
+
68
+ Grouped by what they are for; **`src/components/index.ts` is the authoritative list**, and Storybook
69
+ is the way to actually look at them.
70
+
71
+ | Group | Components |
72
+ | --- | --- |
73
+ | Calendar | `BigCalendarView`, `CalendarMergedView`, `MonthGrid`, `MiniMonthPicker`, `CalendarToolbar`, `CalendarDayHeader`, `CalendarPickList`, `EventBlock` |
74
+ | Sync & accounts | `SyncDetailsDialog`, `SyncPreviewRail`, `ImportCalendarsDialog`, `AccountCalendarsDialog`, `ConnectedAccountCard`, `AccountCard`, `AddAccountMenu`, `ConnectProviderList`, `ConnectProviderRows`, `PausedBadge` |
75
+ | Auth & onboarding | `AuthCard`, `BrandPanel`, `OtpInput`, `OtpVerifyStep`, `OnboardingStepDots`, `WizardStepper` |
76
+ | Shell | `Sidebar`, `Topbar`, `SearchOverlay` |
77
+ | Data display | `DataTableRow`, `MetricCard`, `AppCard`, `ActivityRow`, `AccentHeader`, `CardFooter`, `IconTile` |
78
+ | Feedback & state | `Toast`, `ConfirmDialog`, `Skeleton`, `EmptyCard`, `DashboardErrorCard` |
79
+ | Icons | `ProviderIcon`, `GoogleIcon`, `MicrosoftIcon` |
80
+
81
+ There is deliberately no `Button` or `Input` here — consumers use Radix Themes for those primitives
82
+ and this library for the ARM-specific compositions above.
83
+
84
+ ## Installation and setup in a consuming app
85
+
86
+ ```sh
87
+ pnpm add @aracreate/arm-ui
88
+ ```
89
+
90
+ Peer dependencies: `react` and `react-dom` (`>=18`), `react-router-dom` (`>=7`), `unocss`,
91
+ `@unocss/preset-wind4`, `@unocss/preset-attributify` (all `>=0.60`), and `@radix-ui/react-icons`
92
+ (`>=1`).
93
+
94
+ Then wire the preset into the app's `uno.config.ts`:
95
+
96
+ ```ts
97
+ import { defineConfig } from "unocss";
98
+ import { acPreset } from "@aracreate/arm-ui/preset";
99
+
100
+ export default defineConfig({
101
+ presets: [acPreset()],
102
+ content: {
103
+ pipeline: {
104
+ include: [
105
+ "src/**/*.{ts,tsx}",
106
+ // Scan library sources so UnoCSS generates every class the components use
107
+ "node_modules/@aracreate/arm-ui/src/**/*.{ts,tsx}",
108
+ ],
109
+ },
110
+ },
111
+ });
112
+ ```
113
+
114
+ **The library scan path is not optional.** UnoCSS only generates CSS for class names it finds in
115
+ scanned files, and the components' classes live in library sources the app never imports directly —
116
+ omit the path and components render unstyled. The alternative is to skip scanning and import the
117
+ pre-built stylesheet instead:
118
+
119
+ ```ts
120
+ import "@aracreate/arm-ui/style.css";
121
+ ```
122
+
123
+ Use `acPreset()`, never a bare `presetWind4()` — the preset is what adds the brand scales, and the
124
+ consuming apps' ESLint configs fail the build on a direct `@unocss/preset-wind4` import and on
125
+ stock-palette classes (`text-gray-500`, `bg-blue-600`) for exactly this reason.
126
+
127
+ ## Commands
128
+
129
+ **This repo has no `Makefile`** (unlike every other repo in the workspace), so it is driven through
130
+ `package.json` scripts:
131
+
132
+ ```sh
133
+ pnpm install
134
+ pnpm dev # build CSS once, then tsup --watch
135
+ pnpm build # build:js (tsup) + build:css (UnoCSS + token CSS copy)
136
+ pnpm storybook # Storybook on :6006 — the component catalogue
137
+ pnpm test # component tests (vitest.components.config.ts)
138
+ pnpm test:storybook # Storybook tests (vitest.config.ts) — a genuinely separate suite
139
+ pnpm type-check # tsc --noEmit
140
+ pnpm lint # eslint src
141
+ pnpm format # prettier --write
142
+ pnpm release # semantic-release (CI)
143
+ pnpm clean # rm -rf dist
144
+ ```
145
+
146
+ `prepublishOnly` runs `clean` then `build`, so a publish cannot ship a stale `dist/`.
147
+
148
+ ## Conventions
149
+
150
+ Repo conventions (file headers, naming, versioning, Makefile targets) follow
151
+ [aracreate-conventions](https://github.com/aracreate-group/aracreate-conventions) — formerly
152
+ `aracreate-template-codebase`, still checked out locally under that name at
153
+ [`../../aracreate-template-codebase`](../../aracreate-template-codebase). Template-conformance work
154
+ for this repo is tracked in `TASK_SHEET.md`; this repo is currently short a `Makefile` and a
155
+ `VERSION` file, so its version lives in `package.json` and is managed by semantic-release.
156
+
157
+ Project-specific rules:
158
+
159
+ - **Every class a component renders must be reachable by the CSS build.** A class assembled at
160
+ runtime from fragments UnoCSS cannot see will not exist in `style.css`.
161
+ - **Add a colocated `*.test.tsx` with the component**, including its axe accessibility assertion.
162
+ - **Bump and publish before a consumer can use a change** — see the pinned-dependency note above.
163
+
164
+ Deeper internals — the `tsup` build, why there are two Vitest configs, how to add a component, the
165
+ token system, and the publishing flow — are in [DEVELOPER.md](./DEVELOPER.md), which this README
166
+ deliberately does not duplicate.
167
+
168
+ ## License
169
+
170
+ GPL-3.0 — see [LICENSE](./LICENSE).
@@ -0,0 +1,196 @@
1
+ /* Restyles react-big-calendar's default look with Radix tokens — only
2
+ * color/border/typography/spacing values change; all layout math (grid,
3
+ * flex, absolute positioning for event columns) stays exactly as the
4
+ * library ships it. See AGENTS.md: tokens only, no raw px for spacing. */
5
+
6
+ .rbc-radix-scope,
7
+ .rbc-radix-scope .rbc-calendar * {
8
+ font-family: var(--font-poppins);
9
+ }
10
+
11
+ /* ── Toolbar — rendered by CalendarToolbar.tsx (real Radix Button/IconButton
12
+ * components), not RBC's default <button> markup. It is a CHILD of
13
+ * `.rbc-calendar` in RBC's actual render tree (same parent as the grid
14
+ * view), not a sibling above it — see Calendar.js render(). `.calendar-toolbar`
15
+ * is the class hook CalendarToolbar.tsx puts on its own root, so we can give
16
+ * it padding + a divider that visually seams it to the grid below. */
17
+ .rbc-radix-scope .calendar-toolbar {
18
+ padding: var(--space-4) var(--space-4) var(--space-3);
19
+ border-bottom: 1px solid var(--gray-4);
20
+ }
21
+
22
+ /* ── Grid chrome (borders, headers, today highlight) ───────────────────── */
23
+ .rbc-radix-scope .rbc-calendar {
24
+ border-radius: var(--radius-5);
25
+ border: 1px solid var(--gray-5);
26
+ box-shadow: var(--shadow-card);
27
+ background: var(--color-panel-solid);
28
+ overflow: hidden;
29
+ }
30
+ .rbc-radix-scope .rbc-header {
31
+ color: var(--gray-10);
32
+ font-weight: 600;
33
+ font-size: var(--font-size-2);
34
+ padding: var(--space-3) 0 var(--space-3);
35
+ border-color: var(--gray-4) !important;
36
+ /* RBC's base CSS sets overflow:hidden on this cell — the today-marker
37
+ * circle in CalendarDayHeader.tsx needs room to render at full size. */
38
+ overflow: visible;
39
+ }
40
+ /* CalendarDayHeader renders a two-row layout (weekday label + date circle)
41
+ that is taller than RBC's assumed single-line header. Force the header
42
+ content row to accommodate both rows without clipping. */
43
+ .rbc-radix-scope .rbc-time-header-content > .rbc-row:first-child {
44
+ min-height: calc(var(--space-6) + var(--font-size-1) + var(--space-3));
45
+ }
46
+ /* RBC's own header/grid divider — never targeted before, so it stayed at
47
+ * the library's default #ddd instead of our theme's tokens and read as a
48
+ * weak seam against the surrounding gray-3/gray-4 borders. */
49
+ .rbc-radix-scope .rbc-time-header > .rbc-row:first-child {
50
+ border-bottom: 1.5px solid var(--gray-6);
51
+ }
52
+ /* RBC's TimeGridHeader always renders an all-day event row directly below
53
+ * the day-number header (DateContentRow with isAllDay:true) — this app has
54
+ * no all-day event support (see calendar-mock.ts: AvailabilityBlock has no
55
+ * allDay concept), so that row is always empty. Left visible, it added a
56
+ * stray divider line under the header and picked up its own `.rbc-today`
57
+ * wash, making today's header cell look like a tall blue block split by an
58
+ * extra line rather than a clean header. Hide it — nothing can ever
59
+ * populate it. */
60
+ .rbc-radix-scope .rbc-allday-cell {
61
+ display: none;
62
+ }
63
+ .rbc-radix-scope .rbc-month-view,
64
+ .rbc-radix-scope .rbc-time-view,
65
+ .rbc-radix-scope .rbc-time-header,
66
+ .rbc-radix-scope .rbc-time-content,
67
+ .rbc-radix-scope .rbc-day-bg,
68
+ .rbc-radix-scope .rbc-month-row,
69
+ .rbc-radix-scope .rbc-timeslot-group,
70
+ .rbc-radix-scope .rbc-time-header-content,
71
+ .rbc-radix-scope .rbc-header,
72
+ .rbc-radix-scope .rbc-day-slot .rbc-time-slot {
73
+ border-color: var(--gray-3) !important;
74
+ }
75
+ /* Hour boundaries stay a touch stronger than the half-hour sub-lines so the
76
+ * grid reads as grouped hours instead of a uniform mesh. RBC's default
77
+ * min-height (40px) doesn't leave room for our multi-line event card
78
+ * (title + time range + location) even on 60-90min events — raise it so a
79
+ * 30-min slot has enough vertical room for 2-3 short text lines. */
80
+ .rbc-radix-scope .rbc-timeslot-group {
81
+ border-color: var(--gray-4) !important;
82
+ /* Our event card shows up to 3 stacked lines (title, time range,
83
+ * location) on a 60min slot — needs real room, not RBC's 40px default. */
84
+ min-height: calc(var(--space-9) + var(--space-6));
85
+ }
86
+ /* Today is marked by the amber circle on the date number alone (via
87
+ * CalendarDayHeader.tsx in week view / .rbc-now below in month view) — no
88
+ * full-column/full-cell background wash, which read as an oversized block
89
+ * of color rather than a subtle marker. */
90
+ .rbc-radix-scope .rbc-today {
91
+ background-color: transparent;
92
+ }
93
+ /* RBC right-aligns the date number by default (text-align:right) — center
94
+ * it at the top of each cell instead, with a touch of top padding so it
95
+ * doesn't sit flush against the header border. */
96
+ .rbc-radix-scope .rbc-date-cell {
97
+ text-align: center;
98
+ padding: var(--space-1) 0 var(--space-2);
99
+ }
100
+ /* Month view has no custom header component — mark today's date number with
101
+ * a filled amber circle to match the week view's CalendarDayHeader marker. */
102
+ .rbc-radix-scope .rbc-month-view .rbc-now .rbc-button-link {
103
+ display: inline-flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ width: var(--space-6);
107
+ height: var(--space-6);
108
+ border-radius: 50%;
109
+ background: var(--accent-9);
110
+ color: var(--accent-contrast);
111
+ font-weight: 500;
112
+ font-size: var(--font-size-3);
113
+ line-height: 1;
114
+ }
115
+ .rbc-radix-scope .rbc-off-range-bg {
116
+ background: var(--gray-2);
117
+ }
118
+ .rbc-radix-scope .rbc-off-range {
119
+ color: var(--gray-11);
120
+ }
121
+ .rbc-radix-scope .rbc-label {
122
+ color: var(--gray-11);
123
+ font-size: var(--font-size-1);
124
+ }
125
+ .rbc-radix-scope .rbc-current-time-indicator {
126
+ background-color: var(--accent-9);
127
+ height: 2px;
128
+ }
129
+ .rbc-radix-scope .rbc-show-more {
130
+ color: var(--accent-11);
131
+ font-weight: 600;
132
+ font-size: var(--font-size-1);
133
+ }
134
+
135
+ /* RBC reserves a fixed 10px right margin on the events container (its own
136
+ * scrollbar-gutter allowance) — shrink it to a Radix space step so the
137
+ * block doesn't look like it's leaving unexplained dead space when no
138
+ * scrollbar is present. */
139
+ .rbc-radix-scope .rbc-day-slot .rbc-events-container {
140
+ margin-right: var(--space-1);
141
+ }
142
+
143
+ /* ── Events — base shape only; color comes from eventPropGetter per-event ──
144
+ * Week view: solid-fill colored block (card shape, shadow, padding). Month
145
+ * view: plain dot+text row (see components.month.event in BigCalendarView)
146
+ * — no fill, so no card chrome needed, just enough padding to breathe. */
147
+ .rbc-radix-scope .rbc-time-view .rbc-event {
148
+ border-radius: var(--radius-3);
149
+ padding: var(--space-1) var(--space-2);
150
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
151
+ /* Defensive backstop: content taller than the event's time-computed height
152
+ * clips inside its own box instead of bleeding into the cell below. */
153
+ overflow: hidden;
154
+ }
155
+ /* Chip styling (background, radius, padding) lives on the event content
156
+ * itself in components.month.event — the .rbc-event wrapper just needs to
157
+ * get out of the way so the chip isn't double-padded/double-boxed. */
158
+ .rbc-radix-scope .rbc-month-view .rbc-event {
159
+ padding: 0;
160
+ background: none;
161
+ box-shadow: none;
162
+ }
163
+ .rbc-radix-scope .rbc-event:focus {
164
+ outline: 2px solid var(--accent-8);
165
+ outline-offset: 1px;
166
+ }
167
+ .rbc-radix-scope .rbc-event-label {
168
+ display: none; /* time is redundant with our custom event content */
169
+ }
170
+ .rbc-radix-scope .rbc-selected-cell {
171
+ background-color: var(--accent-3);
172
+ }
173
+
174
+ /* ── Narrow container — the desktop row-height (~96px/hour, sized for a
175
+ * 3-line week-view event card) and toolbar/header padding are too generous
176
+ * once the calendar itself renders under ~480px wide (e.g. narrow mobile,
177
+ * or the stacked-sidebar layout in CalendarMergedView). Scale both down so
178
+ * the grid doesn't force excessive scrolling or crowd the toolbar. */
179
+ @container (max-width: 480px) {
180
+ .rbc-radix-scope .calendar-toolbar {
181
+ padding: var(--space-3) var(--space-3) var(--space-2);
182
+ }
183
+ .rbc-radix-scope .rbc-header {
184
+ padding: var(--space-2) 0;
185
+ }
186
+ .rbc-radix-scope .rbc-timeslot-group {
187
+ min-height: var(--space-8);
188
+ }
189
+ /* At the smaller row height above, even a 60min+ event card no longer has
190
+ * room for 3 stacked lines — drop to title-only regardless of duration.
191
+ * (.rbc-event already clips overflow as a backstop; this avoids relying
192
+ * on that and keeps text from ever getting cut off in the first place.) */
193
+ .rbc-radix-scope .rbc-time-view .rbc-event > div > *:not(:first-child) {
194
+ display: none;
195
+ }
196
+ }
@@ -0,0 +1,2 @@
1
+ var r={primary:{50:"#fef7e6",100:"#fdecc0",200:"#fbd886",300:"#f9c44c",400:"#f7b01f",500:"#F9BF3B",600:"#e6a82d",700:"#cc8f1f",800:"#b37611",900:"#995d03"},secondary:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a"},success:{50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d"},error:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d"},warning:{50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f"},info:{50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a"},neutral:{50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717"},background:{primary:"#ffffff",secondary:"#f8fafc",tertiary:"#f1f5f9"},text:{primary:"#0f172a",secondary:"#475569",tertiary:"#64748b",disabled:"#94a3b8"},border:{primary:"#e2e8f0",secondary:"#cbd5e1",focus:"#3b82f6",error:"#ef4444"}},n={colors:r,base:{transition:"transition-all duration-200 ease-in-out motion-reduce:transition-none",focus:"focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-background-primary focus-visible:ring-2",disabled:"disabled:opacity-60 disabled:cursor-not-allowed disabled:pointer-events-none",interactive:"cursor-pointer select-none",highContrast:"forced-colors:border forced-colors:border-solid"},sizes:{xs:{text:"text-xs",padding:"px-2 py-1",height:"h-6",icon:"h-3 w-3",gap:"gap-1"},sm:{text:"text-sm",padding:"px-3 py-1.5",height:"h-8",icon:"h-4 w-4",gap:"gap-1.5"},md:{text:"text-base",padding:"px-4 py-2",height:"h-10",icon:"h-5 w-5",gap:"gap-2"},lg:{text:"text-lg",padding:"px-5 py-2.5",height:"h-12",icon:"h-6 w-6",gap:"gap-2.5"},xl:{text:"text-xl",padding:"px-6 py-3",height:"h-14",icon:"h-7 w-7",gap:"gap-3"}},variants:{primary:{solid:"bg-primary-9 text-neutral-12 hover:bg-primary-10 focus:ring-primary-8 active:bg-primary-10",outline:"border border-primary-8 text-primary-11 hover:bg-primary-3 hover:border-primary-9 focus:ring-primary-8",ghost:"text-primary-11 hover:bg-primary-3 hover:text-primary-12 focus:ring-primary-8",soft:"bg-primary-3 text-primary-11 hover:bg-primary-4 focus:ring-primary-8"},secondary:{solid:"bg-secondary-500 text-white hover:bg-secondary-600 focus:ring-secondary-500 active:bg-secondary-700",outline:"border border-secondary-300 text-secondary-700 hover:bg-secondary-50 hover:border-secondary-400 focus:ring-secondary-500",ghost:"text-secondary-700 hover:bg-secondary-100 hover:text-secondary-800 focus:ring-secondary-500",soft:"bg-secondary-100 text-secondary-800 hover:bg-secondary-200 focus:ring-secondary-500"},destructive:{solid:"bg-error-9 text-white hover:bg-error-10 focus:ring-error-8 active:bg-error-10",outline:"border border-error-8 text-error-11 hover:bg-error-3 hover:border-error-9 focus:ring-error-8",ghost:"text-error-11 hover:bg-error-3 hover:text-error-12 focus:ring-error-8",soft:"bg-error-3 text-error-11 hover:bg-error-4 focus:ring-error-8"},success:{solid:"bg-success-9 text-white hover:bg-success-10 focus:ring-success-8 active:bg-success-10",outline:"border border-success-8 text-success-11 hover:bg-success-3 hover:border-success-9 focus:ring-success-8",ghost:"text-success-11 hover:bg-success-3 hover:text-success-12 focus:ring-success-8",soft:"bg-success-3 text-success-11 hover:bg-success-4 focus:ring-success-8"},warning:{solid:"bg-warning-9 text-neutral-12 hover:bg-warning-10 focus:ring-warning-8 active:bg-warning-10",outline:"border border-warning-8 text-warning-11 hover:bg-warning-3 hover:border-warning-9 focus:ring-warning-8",ghost:"text-warning-11 hover:bg-warning-3 hover:text-warning-12 focus:ring-warning-8",soft:"bg-warning-3 text-warning-11 hover:bg-warning-4 focus:ring-warning-8"},info:{solid:"bg-info-9 text-white hover:bg-info-10 focus:ring-info-8 active:bg-info-10",outline:"border border-info-8 text-info-11 hover:bg-info-3 hover:border-info-9 focus:ring-info-8",ghost:"text-info-11 hover:bg-info-3 hover:text-info-12 focus:ring-info-8",soft:"bg-info-3 text-info-11 hover:bg-info-4 focus:ring-info-8"}},radius:{none:"rounded-none",xs:"rounded-xs",sm:"rounded-sm",md:"rounded-md",lg:"rounded-lg",xl:"rounded-xl","2xl":"rounded-2xl","3xl":"rounded-3xl",full:"rounded-full"},spacing:{none:"gap-0",xs:"gap-1",sm:"gap-2",md:"gap-3",lg:"gap-4",xl:"gap-6","2xl":"gap-8","3xl":"gap-12"},typography:{xs:"text-xs leading-4",sm:"text-sm leading-5",base:"text-base leading-6",lg:"text-lg leading-7",xl:"text-xl leading-8","2xl":"text-2xl leading-9","3xl":"text-3xl leading-10"},animations:{duration:{fast:"duration-150",normal:"duration-200",slow:"duration-300"},easing:{linear:"ease-linear",in:"ease-in",out:"ease-out",inOut:"ease-in-out"},fadeIn:"animate-in fade-in",fadeOut:"animate-out fade-out",slideIn:"animate-in slide-in-from-bottom-2",slideOut:"animate-out slide-out-to-bottom-2",scaleIn:"animate-in zoom-in-95",scaleOut:"animate-out zoom-out-95"},accessibility:{srOnly:"sr-only",focusTrap:"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",highContrast:"forced-colors:border forced-colors:border-solid",reducedMotion:"motion-reduce:transition-none motion-reduce:animate-none",touchTarget:"min-h-11 min-w-11"}},i=(t,o=500)=>{let e=r[t];return typeof e=="object"&&e!==null&&o in e?e[String(o)]:r.primary[500]};export{r as a,n as b,i as c};
2
+ //# sourceMappingURL=chunk-LGJWNA6J.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/theme.ts"],"sourcesContent":["// Simplified single color palette\nconst colors = {\n // Primary brand colors\n primary: {\n 50: \"#fef7e6\",\n 100: \"#fdecc0\",\n 200: \"#fbd886\",\n 300: \"#f9c44c\",\n 400: \"#f7b01f\",\n 500: \"#F9BF3B\", // Main primary\n 600: \"#e6a82d\",\n 700: \"#cc8f1f\",\n 800: \"#b37611\",\n 900: \"#995d03\",\n },\n\n // Secondary colors\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n },\n\n // Semantic colors\n success: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n },\n\n error: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n },\n\n warning: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\",\n },\n\n info: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n },\n\n // Neutral colors\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n },\n\n // Background and surface colors\n background: {\n primary: \"#ffffff\",\n secondary: \"#f8fafc\",\n tertiary: \"#f1f5f9\",\n },\n\n // Text colors\n text: {\n primary: \"#0f172a\",\n secondary: \"#475569\",\n tertiary: \"#64748b\",\n disabled: \"#94a3b8\",\n },\n\n // Border colors\n border: {\n primary: \"#e2e8f0\",\n secondary: \"#cbd5e1\",\n focus: \"#3b82f6\",\n error: \"#ef4444\",\n },\n} as const;\n\n// Simplified theme system\nexport const theme = {\n // Single color palette\n colors,\n\n // Enhanced base component styles with accessibility focus\n base: {\n // Transitions with reduced motion support\n transition: \"transition-all duration-200 ease-in-out motion-reduce:transition-none\",\n\n // Enhanced focus states meeting WCAG 2.1 AA standards\n focus:\n \"focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-background-primary focus-visible:ring-2\",\n\n // Disabled states with proper contrast\n disabled: \"disabled:opacity-60 disabled:cursor-not-allowed disabled:pointer-events-none\",\n\n // Interactive states\n interactive: \"cursor-pointer select-none\",\n\n // High contrast mode support\n highContrast: \"forced-colors:border forced-colors:border-solid\",\n },\n\n // Enhanced size system with consistent spacing\n sizes: {\n xs: {\n text: \"text-xs\",\n padding: \"px-2 py-1\",\n height: \"h-6\",\n icon: \"h-3 w-3\",\n gap: \"gap-1\",\n },\n sm: {\n text: \"text-sm\",\n padding: \"px-3 py-1.5\",\n height: \"h-8\",\n icon: \"h-4 w-4\",\n gap: \"gap-1.5\",\n },\n md: {\n text: \"text-base\",\n padding: \"px-4 py-2\",\n height: \"h-10\",\n icon: \"h-5 w-5\",\n gap: \"gap-2\",\n },\n lg: {\n text: \"text-lg\",\n padding: \"px-5 py-2.5\",\n height: \"h-12\",\n icon: \"h-6 w-6\",\n gap: \"gap-2.5\",\n },\n xl: {\n text: \"text-xl\",\n padding: \"px-6 py-3\",\n height: \"h-14\",\n icon: \"h-7 w-7\",\n gap: \"gap-3\",\n },\n },\n\n // Enhanced variants with accessibility support — Radix 1-12 scale\n variants: {\n primary: {\n // text-neutral-12 (static dark): yellow-9 fails WCAG with white text\n solid:\n \"bg-primary-9 text-neutral-12 hover:bg-primary-10 focus:ring-primary-8 active:bg-primary-10\",\n outline:\n \"border border-primary-8 text-primary-11 hover:bg-primary-3 hover:border-primary-9 focus:ring-primary-8\",\n ghost: \"text-primary-11 hover:bg-primary-3 hover:text-primary-12 focus:ring-primary-8\",\n soft: \"bg-primary-3 text-primary-11 hover:bg-primary-4 focus:ring-primary-8\",\n },\n secondary: {\n // Secondary still uses legacy 50-900 shades (Phase 12B will migrate)\n solid:\n \"bg-secondary-500 text-white hover:bg-secondary-600 focus:ring-secondary-500 active:bg-secondary-700\",\n outline:\n \"border border-secondary-300 text-secondary-700 hover:bg-secondary-50 hover:border-secondary-400 focus:ring-secondary-500\",\n ghost:\n \"text-secondary-700 hover:bg-secondary-100 hover:text-secondary-800 focus:ring-secondary-500\",\n soft: \"bg-secondary-100 text-secondary-800 hover:bg-secondary-200 focus:ring-secondary-500\",\n },\n destructive: {\n solid: \"bg-error-9 text-white hover:bg-error-10 focus:ring-error-8 active:bg-error-10\",\n outline:\n \"border border-error-8 text-error-11 hover:bg-error-3 hover:border-error-9 focus:ring-error-8\",\n ghost: \"text-error-11 hover:bg-error-3 hover:text-error-12 focus:ring-error-8\",\n soft: \"bg-error-3 text-error-11 hover:bg-error-4 focus:ring-error-8\",\n },\n success: {\n solid:\n \"bg-success-9 text-white hover:bg-success-10 focus:ring-success-8 active:bg-success-10\",\n outline:\n \"border border-success-8 text-success-11 hover:bg-success-3 hover:border-success-9 focus:ring-success-8\",\n ghost: \"text-success-11 hover:bg-success-3 hover:text-success-12 focus:ring-success-8\",\n soft: \"bg-success-3 text-success-11 hover:bg-success-4 focus:ring-success-8\",\n },\n warning: {\n // text-neutral-12 (static dark): amber-9 also too bright for white text\n solid:\n \"bg-warning-9 text-neutral-12 hover:bg-warning-10 focus:ring-warning-8 active:bg-warning-10\",\n outline:\n \"border border-warning-8 text-warning-11 hover:bg-warning-3 hover:border-warning-9 focus:ring-warning-8\",\n ghost: \"text-warning-11 hover:bg-warning-3 hover:text-warning-12 focus:ring-warning-8\",\n soft: \"bg-warning-3 text-warning-11 hover:bg-warning-4 focus:ring-warning-8\",\n },\n info: {\n solid: \"bg-info-9 text-white hover:bg-info-10 focus:ring-info-8 active:bg-info-10\",\n outline:\n \"border border-info-8 text-info-11 hover:bg-info-3 hover:border-info-9 focus:ring-info-8\",\n ghost: \"text-info-11 hover:bg-info-3 hover:text-info-12 focus:ring-info-8\",\n soft: \"bg-info-3 text-info-11 hover:bg-info-4 focus:ring-info-8\",\n },\n },\n\n // Enhanced border radius system\n radius: {\n none: \"rounded-none\",\n xs: \"rounded-xs\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n \"3xl\": \"rounded-3xl\",\n full: \"rounded-full\",\n },\n\n // Enhanced spacing system\n spacing: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-4\",\n xl: \"gap-6\",\n \"2xl\": \"gap-8\",\n \"3xl\": \"gap-12\",\n },\n\n // Typography scale\n typography: {\n xs: \"text-xs leading-4\",\n sm: \"text-sm leading-5\",\n base: \"text-base leading-6\",\n lg: \"text-lg leading-7\",\n xl: \"text-xl leading-8\",\n \"2xl\": \"text-2xl leading-9\",\n \"3xl\": \"text-3xl leading-10\",\n },\n\n // Animation system with reduced motion support\n animations: {\n // Durations\n duration: {\n fast: \"duration-150\",\n normal: \"duration-200\",\n slow: \"duration-300\",\n },\n\n // Easing functions\n easing: {\n linear: \"ease-linear\",\n in: \"ease-in\",\n out: \"ease-out\",\n inOut: \"ease-in-out\",\n },\n\n // Common animations\n fadeIn: \"animate-in fade-in\",\n fadeOut: \"animate-out fade-out\",\n slideIn: \"animate-in slide-in-from-bottom-2\",\n slideOut: \"animate-out slide-out-to-bottom-2\",\n scaleIn: \"animate-in zoom-in-95\",\n scaleOut: \"animate-out zoom-out-95\",\n },\n\n // Accessibility features\n accessibility: {\n // Screen reader only content\n srOnly: \"sr-only\",\n\n // Focus management\n focusTrap: \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n\n // High contrast mode\n highContrast: \"forced-colors:border forced-colors:border-solid\",\n\n // Reduced motion\n reducedMotion: \"motion-reduce:transition-none motion-reduce:animate-none\",\n\n // Touch targets (minimum 44px)\n touchTarget: \"min-h-11 min-w-11\",\n },\n} as const;\n\n// Helper function to get colors\nexport const getColor = (\n colorName: keyof typeof colors,\n shade: keyof typeof colors.primary | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 = 500\n): string => {\n const colorGroup = colors[colorName];\n\n if (typeof colorGroup === \"object\" && colorGroup !== null && shade in colorGroup) {\n return (colorGroup as Record<string, string>)[String(shade)];\n }\n\n // Fallback to primary color if not found\n return colors.primary[500];\n};\n\n// Type helpers for theme\nexport type ThemeSize = keyof typeof theme.sizes;\nexport type ThemeVariant = keyof typeof theme.variants;\nexport type ThemeVariantStyle = keyof typeof theme.variants.primary;\nexport type ThemeRadius = keyof typeof theme.radius;\nexport type ThemeSpacing = keyof typeof theme.spacing;\nexport type ThemeTypography = keyof typeof theme.typography;\nexport type ThemeColor = keyof typeof colors;\n// 1-12: Radix scale (new). 50-900: legacy shades (kept during Phase 12B migration).\nexport type ThemeColorShade =\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 50\n | 100\n | 200\n | 300\n | 400\n | 500\n | 600\n | 700\n | 800\n | 900;\nexport type ThemeAnimation = keyof typeof theme.animations;\n\n// Export colors for external use\nexport { colors };\n"],"mappings":"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","names":["colors","theme","getColor","colorName","shade","colorGroup"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var r={primary:{50:"#fef7e6",100:"#fdecc0",200:"#fbd886",300:"#f9c44c",400:"#f7b01f",500:"#F9BF3B",600:"#e6a82d",700:"#cc8f1f",800:"#b37611",900:"#995d03"},secondary:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a"},success:{50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d"},error:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d"},warning:{50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f"},info:{50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a"},neutral:{50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717"},background:{primary:"#ffffff",secondary:"#f8fafc",tertiary:"#f1f5f9"},text:{primary:"#0f172a",secondary:"#475569",tertiary:"#64748b",disabled:"#94a3b8"},border:{primary:"#e2e8f0",secondary:"#cbd5e1",focus:"#3b82f6",error:"#ef4444"}},n= exports.b ={colors:r,base:{transition:"transition-all duration-200 ease-in-out motion-reduce:transition-none",focus:"focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-background-primary focus-visible:ring-2",disabled:"disabled:opacity-60 disabled:cursor-not-allowed disabled:pointer-events-none",interactive:"cursor-pointer select-none",highContrast:"forced-colors:border forced-colors:border-solid"},sizes:{xs:{text:"text-xs",padding:"px-2 py-1",height:"h-6",icon:"h-3 w-3",gap:"gap-1"},sm:{text:"text-sm",padding:"px-3 py-1.5",height:"h-8",icon:"h-4 w-4",gap:"gap-1.5"},md:{text:"text-base",padding:"px-4 py-2",height:"h-10",icon:"h-5 w-5",gap:"gap-2"},lg:{text:"text-lg",padding:"px-5 py-2.5",height:"h-12",icon:"h-6 w-6",gap:"gap-2.5"},xl:{text:"text-xl",padding:"px-6 py-3",height:"h-14",icon:"h-7 w-7",gap:"gap-3"}},variants:{primary:{solid:"bg-primary-9 text-neutral-12 hover:bg-primary-10 focus:ring-primary-8 active:bg-primary-10",outline:"border border-primary-8 text-primary-11 hover:bg-primary-3 hover:border-primary-9 focus:ring-primary-8",ghost:"text-primary-11 hover:bg-primary-3 hover:text-primary-12 focus:ring-primary-8",soft:"bg-primary-3 text-primary-11 hover:bg-primary-4 focus:ring-primary-8"},secondary:{solid:"bg-secondary-500 text-white hover:bg-secondary-600 focus:ring-secondary-500 active:bg-secondary-700",outline:"border border-secondary-300 text-secondary-700 hover:bg-secondary-50 hover:border-secondary-400 focus:ring-secondary-500",ghost:"text-secondary-700 hover:bg-secondary-100 hover:text-secondary-800 focus:ring-secondary-500",soft:"bg-secondary-100 text-secondary-800 hover:bg-secondary-200 focus:ring-secondary-500"},destructive:{solid:"bg-error-9 text-white hover:bg-error-10 focus:ring-error-8 active:bg-error-10",outline:"border border-error-8 text-error-11 hover:bg-error-3 hover:border-error-9 focus:ring-error-8",ghost:"text-error-11 hover:bg-error-3 hover:text-error-12 focus:ring-error-8",soft:"bg-error-3 text-error-11 hover:bg-error-4 focus:ring-error-8"},success:{solid:"bg-success-9 text-white hover:bg-success-10 focus:ring-success-8 active:bg-success-10",outline:"border border-success-8 text-success-11 hover:bg-success-3 hover:border-success-9 focus:ring-success-8",ghost:"text-success-11 hover:bg-success-3 hover:text-success-12 focus:ring-success-8",soft:"bg-success-3 text-success-11 hover:bg-success-4 focus:ring-success-8"},warning:{solid:"bg-warning-9 text-neutral-12 hover:bg-warning-10 focus:ring-warning-8 active:bg-warning-10",outline:"border border-warning-8 text-warning-11 hover:bg-warning-3 hover:border-warning-9 focus:ring-warning-8",ghost:"text-warning-11 hover:bg-warning-3 hover:text-warning-12 focus:ring-warning-8",soft:"bg-warning-3 text-warning-11 hover:bg-warning-4 focus:ring-warning-8"},info:{solid:"bg-info-9 text-white hover:bg-info-10 focus:ring-info-8 active:bg-info-10",outline:"border border-info-8 text-info-11 hover:bg-info-3 hover:border-info-9 focus:ring-info-8",ghost:"text-info-11 hover:bg-info-3 hover:text-info-12 focus:ring-info-8",soft:"bg-info-3 text-info-11 hover:bg-info-4 focus:ring-info-8"}},radius:{none:"rounded-none",xs:"rounded-xs",sm:"rounded-sm",md:"rounded-md",lg:"rounded-lg",xl:"rounded-xl","2xl":"rounded-2xl","3xl":"rounded-3xl",full:"rounded-full"},spacing:{none:"gap-0",xs:"gap-1",sm:"gap-2",md:"gap-3",lg:"gap-4",xl:"gap-6","2xl":"gap-8","3xl":"gap-12"},typography:{xs:"text-xs leading-4",sm:"text-sm leading-5",base:"text-base leading-6",lg:"text-lg leading-7",xl:"text-xl leading-8","2xl":"text-2xl leading-9","3xl":"text-3xl leading-10"},animations:{duration:{fast:"duration-150",normal:"duration-200",slow:"duration-300"},easing:{linear:"ease-linear",in:"ease-in",out:"ease-out",inOut:"ease-in-out"},fadeIn:"animate-in fade-in",fadeOut:"animate-out fade-out",slideIn:"animate-in slide-in-from-bottom-2",slideOut:"animate-out slide-out-to-bottom-2",scaleIn:"animate-in zoom-in-95",scaleOut:"animate-out zoom-out-95"},accessibility:{srOnly:"sr-only",focusTrap:"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",highContrast:"forced-colors:border forced-colors:border-solid",reducedMotion:"motion-reduce:transition-none motion-reduce:animate-none",touchTarget:"min-h-11 min-w-11"}},i= exports.c =(t,o=500)=>{let e=r[t];return typeof e=="object"&&e!==null&&o in e?e[String(o)]:r.primary[500]};exports.a = r; exports.b = n; exports.c = i;
2
+ //# sourceMappingURL=chunk-TD6NGM5I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/theme.ts"],"names":["colors","theme","getColor","colorName","shade","colorGroup"],"mappings":"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","file":"/Users/kishor/Work/01-araCreate/arm/library/arm-ui-library/dist/chunk-TD6NGM5I.js","sourcesContent":["// Simplified single color palette\nconst colors = {\n // Primary brand colors\n primary: {\n 50: \"#fef7e6\",\n 100: \"#fdecc0\",\n 200: \"#fbd886\",\n 300: \"#f9c44c\",\n 400: \"#f7b01f\",\n 500: \"#F9BF3B\", // Main primary\n 600: \"#e6a82d\",\n 700: \"#cc8f1f\",\n 800: \"#b37611\",\n 900: \"#995d03\",\n },\n\n // Secondary colors\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n },\n\n // Semantic colors\n success: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n },\n\n error: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n },\n\n warning: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\",\n },\n\n info: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n },\n\n // Neutral colors\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n },\n\n // Background and surface colors\n background: {\n primary: \"#ffffff\",\n secondary: \"#f8fafc\",\n tertiary: \"#f1f5f9\",\n },\n\n // Text colors\n text: {\n primary: \"#0f172a\",\n secondary: \"#475569\",\n tertiary: \"#64748b\",\n disabled: \"#94a3b8\",\n },\n\n // Border colors\n border: {\n primary: \"#e2e8f0\",\n secondary: \"#cbd5e1\",\n focus: \"#3b82f6\",\n error: \"#ef4444\",\n },\n} as const;\n\n// Simplified theme system\nexport const theme = {\n // Single color palette\n colors,\n\n // Enhanced base component styles with accessibility focus\n base: {\n // Transitions with reduced motion support\n transition: \"transition-all duration-200 ease-in-out motion-reduce:transition-none\",\n\n // Enhanced focus states meeting WCAG 2.1 AA standards\n focus:\n \"focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-background-primary focus-visible:ring-2\",\n\n // Disabled states with proper contrast\n disabled: \"disabled:opacity-60 disabled:cursor-not-allowed disabled:pointer-events-none\",\n\n // Interactive states\n interactive: \"cursor-pointer select-none\",\n\n // High contrast mode support\n highContrast: \"forced-colors:border forced-colors:border-solid\",\n },\n\n // Enhanced size system with consistent spacing\n sizes: {\n xs: {\n text: \"text-xs\",\n padding: \"px-2 py-1\",\n height: \"h-6\",\n icon: \"h-3 w-3\",\n gap: \"gap-1\",\n },\n sm: {\n text: \"text-sm\",\n padding: \"px-3 py-1.5\",\n height: \"h-8\",\n icon: \"h-4 w-4\",\n gap: \"gap-1.5\",\n },\n md: {\n text: \"text-base\",\n padding: \"px-4 py-2\",\n height: \"h-10\",\n icon: \"h-5 w-5\",\n gap: \"gap-2\",\n },\n lg: {\n text: \"text-lg\",\n padding: \"px-5 py-2.5\",\n height: \"h-12\",\n icon: \"h-6 w-6\",\n gap: \"gap-2.5\",\n },\n xl: {\n text: \"text-xl\",\n padding: \"px-6 py-3\",\n height: \"h-14\",\n icon: \"h-7 w-7\",\n gap: \"gap-3\",\n },\n },\n\n // Enhanced variants with accessibility support — Radix 1-12 scale\n variants: {\n primary: {\n // text-neutral-12 (static dark): yellow-9 fails WCAG with white text\n solid:\n \"bg-primary-9 text-neutral-12 hover:bg-primary-10 focus:ring-primary-8 active:bg-primary-10\",\n outline:\n \"border border-primary-8 text-primary-11 hover:bg-primary-3 hover:border-primary-9 focus:ring-primary-8\",\n ghost: \"text-primary-11 hover:bg-primary-3 hover:text-primary-12 focus:ring-primary-8\",\n soft: \"bg-primary-3 text-primary-11 hover:bg-primary-4 focus:ring-primary-8\",\n },\n secondary: {\n // Secondary still uses legacy 50-900 shades (Phase 12B will migrate)\n solid:\n \"bg-secondary-500 text-white hover:bg-secondary-600 focus:ring-secondary-500 active:bg-secondary-700\",\n outline:\n \"border border-secondary-300 text-secondary-700 hover:bg-secondary-50 hover:border-secondary-400 focus:ring-secondary-500\",\n ghost:\n \"text-secondary-700 hover:bg-secondary-100 hover:text-secondary-800 focus:ring-secondary-500\",\n soft: \"bg-secondary-100 text-secondary-800 hover:bg-secondary-200 focus:ring-secondary-500\",\n },\n destructive: {\n solid: \"bg-error-9 text-white hover:bg-error-10 focus:ring-error-8 active:bg-error-10\",\n outline:\n \"border border-error-8 text-error-11 hover:bg-error-3 hover:border-error-9 focus:ring-error-8\",\n ghost: \"text-error-11 hover:bg-error-3 hover:text-error-12 focus:ring-error-8\",\n soft: \"bg-error-3 text-error-11 hover:bg-error-4 focus:ring-error-8\",\n },\n success: {\n solid:\n \"bg-success-9 text-white hover:bg-success-10 focus:ring-success-8 active:bg-success-10\",\n outline:\n \"border border-success-8 text-success-11 hover:bg-success-3 hover:border-success-9 focus:ring-success-8\",\n ghost: \"text-success-11 hover:bg-success-3 hover:text-success-12 focus:ring-success-8\",\n soft: \"bg-success-3 text-success-11 hover:bg-success-4 focus:ring-success-8\",\n },\n warning: {\n // text-neutral-12 (static dark): amber-9 also too bright for white text\n solid:\n \"bg-warning-9 text-neutral-12 hover:bg-warning-10 focus:ring-warning-8 active:bg-warning-10\",\n outline:\n \"border border-warning-8 text-warning-11 hover:bg-warning-3 hover:border-warning-9 focus:ring-warning-8\",\n ghost: \"text-warning-11 hover:bg-warning-3 hover:text-warning-12 focus:ring-warning-8\",\n soft: \"bg-warning-3 text-warning-11 hover:bg-warning-4 focus:ring-warning-8\",\n },\n info: {\n solid: \"bg-info-9 text-white hover:bg-info-10 focus:ring-info-8 active:bg-info-10\",\n outline:\n \"border border-info-8 text-info-11 hover:bg-info-3 hover:border-info-9 focus:ring-info-8\",\n ghost: \"text-info-11 hover:bg-info-3 hover:text-info-12 focus:ring-info-8\",\n soft: \"bg-info-3 text-info-11 hover:bg-info-4 focus:ring-info-8\",\n },\n },\n\n // Enhanced border radius system\n radius: {\n none: \"rounded-none\",\n xs: \"rounded-xs\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n \"3xl\": \"rounded-3xl\",\n full: \"rounded-full\",\n },\n\n // Enhanced spacing system\n spacing: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-4\",\n xl: \"gap-6\",\n \"2xl\": \"gap-8\",\n \"3xl\": \"gap-12\",\n },\n\n // Typography scale\n typography: {\n xs: \"text-xs leading-4\",\n sm: \"text-sm leading-5\",\n base: \"text-base leading-6\",\n lg: \"text-lg leading-7\",\n xl: \"text-xl leading-8\",\n \"2xl\": \"text-2xl leading-9\",\n \"3xl\": \"text-3xl leading-10\",\n },\n\n // Animation system with reduced motion support\n animations: {\n // Durations\n duration: {\n fast: \"duration-150\",\n normal: \"duration-200\",\n slow: \"duration-300\",\n },\n\n // Easing functions\n easing: {\n linear: \"ease-linear\",\n in: \"ease-in\",\n out: \"ease-out\",\n inOut: \"ease-in-out\",\n },\n\n // Common animations\n fadeIn: \"animate-in fade-in\",\n fadeOut: \"animate-out fade-out\",\n slideIn: \"animate-in slide-in-from-bottom-2\",\n slideOut: \"animate-out slide-out-to-bottom-2\",\n scaleIn: \"animate-in zoom-in-95\",\n scaleOut: \"animate-out zoom-out-95\",\n },\n\n // Accessibility features\n accessibility: {\n // Screen reader only content\n srOnly: \"sr-only\",\n\n // Focus management\n focusTrap: \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n\n // High contrast mode\n highContrast: \"forced-colors:border forced-colors:border-solid\",\n\n // Reduced motion\n reducedMotion: \"motion-reduce:transition-none motion-reduce:animate-none\",\n\n // Touch targets (minimum 44px)\n touchTarget: \"min-h-11 min-w-11\",\n },\n} as const;\n\n// Helper function to get colors\nexport const getColor = (\n colorName: keyof typeof colors,\n shade: keyof typeof colors.primary | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 = 500\n): string => {\n const colorGroup = colors[colorName];\n\n if (typeof colorGroup === \"object\" && colorGroup !== null && shade in colorGroup) {\n return (colorGroup as Record<string, string>)[String(shade)];\n }\n\n // Fallback to primary color if not found\n return colors.primary[500];\n};\n\n// Type helpers for theme\nexport type ThemeSize = keyof typeof theme.sizes;\nexport type ThemeVariant = keyof typeof theme.variants;\nexport type ThemeVariantStyle = keyof typeof theme.variants.primary;\nexport type ThemeRadius = keyof typeof theme.radius;\nexport type ThemeSpacing = keyof typeof theme.spacing;\nexport type ThemeTypography = keyof typeof theme.typography;\nexport type ThemeColor = keyof typeof colors;\n// 1-12: Radix scale (new). 50-900: legacy shades (kept during Phase 12B migration).\nexport type ThemeColorShade =\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 50\n | 100\n | 200\n | 300\n | 400\n | 500\n | 600\n | 700\n | 800\n | 900;\nexport type ThemeAnimation = keyof typeof theme.animations;\n\n// Export colors for external use\nexport { colors };\n"]}
package/dist/index.css ADDED
@@ -0,0 +1,2 @@
1
+ .rbc-radix-scope,.rbc-radix-scope .rbc-calendar *{font-family:var(--font-poppins)}.rbc-radix-scope .calendar-toolbar{padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--gray-4)}.rbc-radix-scope .rbc-calendar{border-radius:var(--radius-5);border:1px solid var(--gray-5);box-shadow:var(--shadow-card);background:var(--color-panel-solid);overflow:hidden}.rbc-radix-scope .rbc-header{color:var(--gray-10);font-weight:600;font-size:var(--font-size-2);padding:var(--space-3) 0 var(--space-3);border-color:var(--gray-4)!important;overflow:visible}.rbc-radix-scope .rbc-time-header-content>.rbc-row:first-child{min-height:calc(var(--space-6) + var(--font-size-1) + var(--space-3))}.rbc-radix-scope .rbc-time-header>.rbc-row:first-child{border-bottom:1.5px solid var(--gray-6)}.rbc-radix-scope .rbc-allday-cell{display:none}.rbc-radix-scope .rbc-month-view,.rbc-radix-scope .rbc-time-view,.rbc-radix-scope .rbc-time-header,.rbc-radix-scope .rbc-time-content,.rbc-radix-scope .rbc-day-bg,.rbc-radix-scope .rbc-month-row,.rbc-radix-scope .rbc-timeslot-group,.rbc-radix-scope .rbc-time-header-content,.rbc-radix-scope .rbc-header,.rbc-radix-scope .rbc-day-slot .rbc-time-slot{border-color:var(--gray-3)!important}.rbc-radix-scope .rbc-timeslot-group{border-color:var(--gray-4)!important;min-height:calc(var(--space-9) + var(--space-6))}.rbc-radix-scope .rbc-today{background-color:transparent}.rbc-radix-scope .rbc-date-cell{text-align:center;padding:var(--space-1) 0 var(--space-2)}.rbc-radix-scope .rbc-month-view .rbc-now .rbc-button-link{display:inline-flex;align-items:center;justify-content:center;width:var(--space-6);height:var(--space-6);border-radius:50%;background:var(--accent-9);color:var(--accent-contrast);font-weight:500;font-size:var(--font-size-3);line-height:1}.rbc-radix-scope .rbc-off-range-bg{background:var(--gray-2)}.rbc-radix-scope .rbc-off-range{color:var(--gray-11)}.rbc-radix-scope .rbc-label{color:var(--gray-11);font-size:var(--font-size-1)}.rbc-radix-scope .rbc-current-time-indicator{background-color:var(--accent-9);height:2px}.rbc-radix-scope .rbc-show-more{color:var(--accent-11);font-weight:600;font-size:var(--font-size-1)}.rbc-radix-scope .rbc-day-slot .rbc-events-container{margin-right:var(--space-1)}.rbc-radix-scope .rbc-time-view .rbc-event{border-radius:var(--radius-3);padding:var(--space-1) var(--space-2);box-shadow:0 1px 2px #0000001f;overflow:hidden}.rbc-radix-scope .rbc-month-view .rbc-event{padding:0;background:none;box-shadow:none}.rbc-radix-scope .rbc-event:focus{outline:2px solid var(--accent-8);outline-offset:1px}.rbc-radix-scope .rbc-event-label{display:none}.rbc-radix-scope .rbc-selected-cell{background-color:var(--accent-3)}@container (max-width: 480px){.rbc-radix-scope .calendar-toolbar{padding:var(--space-3) var(--space-3) var(--space-2)}.rbc-radix-scope .rbc-header{padding:var(--space-2) 0}.rbc-radix-scope .rbc-timeslot-group{min-height:var(--space-8)}.rbc-radix-scope .rbc-time-view .rbc-event>div>*:not(:first-child){display:none}}.radix-themes{--accent-1: #fffef5;--accent-2: #fffce8;--accent-3: #fff8cc;--accent-4: #fff2a8;--accent-5: #ffe980;--accent-6: #ffd94d;--accent-7: #ffd236;--accent-8: #ffca20;--accent-9: #FFC936;--accent-10: #f0b800;--accent-11: #7a5c00;--accent-12: #3d2e00;--accent-a1: #c0800004;--accent-a2: #ffc30015;--accent-a3: #ffcf003f;--accent-a4: #ffc90062;--accent-a5: #ffc20084;--accent-a6: #f6ae0089;--accent-a7: #d6960094;--accent-a8: #c78f00bf;--accent-a9: #ffc600e0;--accent-a10: #f9b700d1;--accent-a11: #997000;--accent-a12: #2a1e00df;--accent-surface: #fff9e5cc;--accent-indicator: #ffcd1f;--accent-track: #ffcd1f;--accent-contrast: #000000;--error-contrast: #ffffff;--success-contrast: #ffffff;--info-contrast: #ffffff;--warning-contrast: #000000;--gray-1: #fafafa;--gray-2: #f4f4f4;--gray-3: #ebebeb;--gray-4: #e0e0e0;--gray-5: #d1d1d1;--gray-6: #bebebe;--gray-7: #a8a8a8;--gray-8: #989898;--gray-9: #8C8C8C;--gray-10: #6e6e6e;--gray-11: #4a4a4a;--gray-12: #1a1a1a;--gray-a1: #00000003;--gray-a2: #00000006;--gray-a3: #00000010;--gray-a4: #00000017;--gray-a5: #0000001f;--gray-a6: #00000026;--gray-a7: #00000031;--gray-a8: #00000044;--gray-a9: #00000072;--gray-a10: #0000007c;--gray-a11: #0000009b;--gray-a12: #000000df;--gray-contrast: #FFFFFF;--gray-surface: #ffffffcc;--gray-indicator: #8d8d8d;--gray-track: #8d8d8d;--color-background: var(--accent-1);--color-surface: #ffffff;--color-panel-solid: #ffffff;--color-panel-translucent: rgba(255, 255, 255, .85);--primary-1: var(--accent-1);--primary-2: var(--accent-2);--primary-3: var(--accent-3);--primary-4: var(--accent-4);--primary-5: var(--accent-5);--primary-6: var(--accent-6);--primary-7: var(--accent-7);--primary-8: var(--accent-8);--primary-9: var(--accent-9);--primary-10: var(--accent-10);--primary-11: var(--accent-11);--primary-12: var(--accent-12);--neutral-1: var(--gray-1);--neutral-2: var(--gray-2);--neutral-3: var(--gray-3);--neutral-4: var(--gray-4);--neutral-5: var(--gray-5);--neutral-6: var(--gray-6);--neutral-7: var(--gray-7);--neutral-8: var(--gray-8);--neutral-9: var(--gray-9);--neutral-10: var(--gray-10);--neutral-11: var(--gray-11);--neutral-12: var(--gray-12);--error-1: var(--red-1);--error-2: var(--red-2);--error-3: var(--red-3);--error-4: var(--red-4);--error-5: var(--red-5);--error-6: var(--red-6);--error-7: var(--red-7);--error-8: var(--red-8);--error-9: var(--red-9);--error-10: var(--red-10);--error-11: var(--red-11);--error-12: var(--red-12);--success-1: var(--green-1);--success-2: var(--green-2);--success-3: var(--green-3);--success-4: var(--green-4);--success-5: var(--green-5);--success-6: var(--green-6);--success-7: var(--green-7);--success-8: var(--green-8);--success-9: var(--green-9);--success-10: var(--green-10);--success-11: var(--green-11);--success-12: var(--green-12);--warning-1: var(--amber-1);--warning-2: var(--amber-2);--warning-3: var(--amber-3);--warning-4: var(--amber-4);--warning-5: var(--amber-5);--warning-6: var(--amber-6);--warning-7: var(--amber-7);--warning-8: var(--amber-8);--warning-9: var(--amber-9);--warning-10: var(--amber-10);--warning-11: var(--amber-11);--warning-12: var(--amber-12);--info-1: var(--blue-1);--info-2: var(--blue-2);--info-3: var(--blue-3);--info-4: var(--blue-4);--info-5: var(--blue-5);--info-6: var(--blue-6);--info-7: var(--blue-7);--info-8: var(--blue-8);--info-9: var(--blue-9);--info-10: var(--blue-10);--info-11: var(--blue-11);--info-12: var(--blue-12);--color-foreground: #111111;--color-on-primary: var(--accent-contrast);--color-muted: var(--neutral-7);--color-border: var(--neutral-4);--text: var(--color-foreground);--text-secondary: var(--color-muted);--text-muted: var(--color-muted);--text-input: var(--color-foreground);--bg-skeleton: var(--neutral-4)}.radix-themes .text-text{color:color-mix(in srgb,var(--color-foreground) var(--un-text-opacity),transparent)!important}.radix-themes .text-textSecondary,.radix-themes .text-textMuted{color:color-mix(in srgb,var(--color-muted) var(--un-text-opacity),transparent)!important}.radix-themes .text-textInput{color:color-mix(in srgb,var(--color-foreground) var(--un-text-opacity),transparent)!important}
2
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/big-calendar-overrides.css","../src/styles/radix-brand-tokens.css"],"sourcesContent":["/* Restyles react-big-calendar's default look with Radix tokens — only\n * color/border/typography/spacing values change; all layout math (grid,\n * flex, absolute positioning for event columns) stays exactly as the\n * library ships it. See AGENTS.md: tokens only, no raw px for spacing. */\n\n.rbc-radix-scope,\n.rbc-radix-scope .rbc-calendar * {\n font-family: var(--font-poppins);\n}\n\n/* ── Toolbar — rendered by CalendarToolbar.tsx (real Radix Button/IconButton\n * components), not RBC's default <button> markup. It is a CHILD of\n * `.rbc-calendar` in RBC's actual render tree (same parent as the grid\n * view), not a sibling above it — see Calendar.js render(). `.calendar-toolbar`\n * is the class hook CalendarToolbar.tsx puts on its own root, so we can give\n * it padding + a divider that visually seams it to the grid below. */\n.rbc-radix-scope .calendar-toolbar {\n padding: var(--space-4) var(--space-4) var(--space-3);\n border-bottom: 1px solid var(--gray-4);\n}\n\n/* ── Grid chrome (borders, headers, today highlight) ───────────────────── */\n.rbc-radix-scope .rbc-calendar {\n border-radius: var(--radius-5);\n border: 1px solid var(--gray-5);\n box-shadow: var(--shadow-card);\n background: var(--color-panel-solid);\n overflow: hidden;\n}\n.rbc-radix-scope .rbc-header {\n color: var(--gray-10);\n font-weight: 600;\n font-size: var(--font-size-2);\n padding: var(--space-3) 0 var(--space-3);\n border-color: var(--gray-4) !important;\n /* RBC's base CSS sets overflow:hidden on this cell — the today-marker\n * circle in CalendarDayHeader.tsx needs room to render at full size. */\n overflow: visible;\n}\n/* CalendarDayHeader renders a two-row layout (weekday label + date circle)\n that is taller than RBC's assumed single-line header. Force the header\n content row to accommodate both rows without clipping. */\n.rbc-radix-scope .rbc-time-header-content > .rbc-row:first-child {\n min-height: calc(var(--space-6) + var(--font-size-1) + var(--space-3));\n}\n/* RBC's own header/grid divider — never targeted before, so it stayed at\n * the library's default #ddd instead of our theme's tokens and read as a\n * weak seam against the surrounding gray-3/gray-4 borders. */\n.rbc-radix-scope .rbc-time-header > .rbc-row:first-child {\n border-bottom: 1.5px solid var(--gray-6);\n}\n/* RBC's TimeGridHeader always renders an all-day event row directly below\n * the day-number header (DateContentRow with isAllDay:true) — this app has\n * no all-day event support (see calendar-mock.ts: AvailabilityBlock has no\n * allDay concept), so that row is always empty. Left visible, it added a\n * stray divider line under the header and picked up its own `.rbc-today`\n * wash, making today's header cell look like a tall blue block split by an\n * extra line rather than a clean header. Hide it — nothing can ever\n * populate it. */\n.rbc-radix-scope .rbc-allday-cell {\n display: none;\n}\n.rbc-radix-scope .rbc-month-view,\n.rbc-radix-scope .rbc-time-view,\n.rbc-radix-scope .rbc-time-header,\n.rbc-radix-scope .rbc-time-content,\n.rbc-radix-scope .rbc-day-bg,\n.rbc-radix-scope .rbc-month-row,\n.rbc-radix-scope .rbc-timeslot-group,\n.rbc-radix-scope .rbc-time-header-content,\n.rbc-radix-scope .rbc-header,\n.rbc-radix-scope .rbc-day-slot .rbc-time-slot {\n border-color: var(--gray-3) !important;\n}\n/* Hour boundaries stay a touch stronger than the half-hour sub-lines so the\n * grid reads as grouped hours instead of a uniform mesh. RBC's default\n * min-height (40px) doesn't leave room for our multi-line event card\n * (title + time range + location) even on 60-90min events — raise it so a\n * 30-min slot has enough vertical room for 2-3 short text lines. */\n.rbc-radix-scope .rbc-timeslot-group {\n border-color: var(--gray-4) !important;\n /* Our event card shows up to 3 stacked lines (title, time range,\n * location) on a 60min slot — needs real room, not RBC's 40px default. */\n min-height: calc(var(--space-9) + var(--space-6));\n}\n/* Today is marked by the amber circle on the date number alone (via\n * CalendarDayHeader.tsx in week view / .rbc-now below in month view) — no\n * full-column/full-cell background wash, which read as an oversized block\n * of color rather than a subtle marker. */\n.rbc-radix-scope .rbc-today {\n background-color: transparent;\n}\n/* RBC right-aligns the date number by default (text-align:right) — center\n * it at the top of each cell instead, with a touch of top padding so it\n * doesn't sit flush against the header border. */\n.rbc-radix-scope .rbc-date-cell {\n text-align: center;\n padding: var(--space-1) 0 var(--space-2);\n}\n/* Month view has no custom header component — mark today's date number with\n * a filled amber circle to match the week view's CalendarDayHeader marker. */\n.rbc-radix-scope .rbc-month-view .rbc-now .rbc-button-link {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--space-6);\n height: var(--space-6);\n border-radius: 50%;\n background: var(--accent-9);\n color: var(--accent-contrast);\n font-weight: 500;\n font-size: var(--font-size-3);\n line-height: 1;\n}\n.rbc-radix-scope .rbc-off-range-bg {\n background: var(--gray-2);\n}\n.rbc-radix-scope .rbc-off-range {\n color: var(--gray-11);\n}\n.rbc-radix-scope .rbc-label {\n color: var(--gray-11);\n font-size: var(--font-size-1);\n}\n.rbc-radix-scope .rbc-current-time-indicator {\n background-color: var(--accent-9);\n height: 2px;\n}\n.rbc-radix-scope .rbc-show-more {\n color: var(--accent-11);\n font-weight: 600;\n font-size: var(--font-size-1);\n}\n\n/* RBC reserves a fixed 10px right margin on the events container (its own\n * scrollbar-gutter allowance) — shrink it to a Radix space step so the\n * block doesn't look like it's leaving unexplained dead space when no\n * scrollbar is present. */\n.rbc-radix-scope .rbc-day-slot .rbc-events-container {\n margin-right: var(--space-1);\n}\n\n/* ── Events — base shape only; color comes from eventPropGetter per-event ──\n * Week view: solid-fill colored block (card shape, shadow, padding). Month\n * view: plain dot+text row (see components.month.event in BigCalendarView)\n * — no fill, so no card chrome needed, just enough padding to breathe. */\n.rbc-radix-scope .rbc-time-view .rbc-event {\n border-radius: var(--radius-3);\n padding: var(--space-1) var(--space-2);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);\n /* Defensive backstop: content taller than the event's time-computed height\n * clips inside its own box instead of bleeding into the cell below. */\n overflow: hidden;\n}\n/* Chip styling (background, radius, padding) lives on the event content\n * itself in components.month.event — the .rbc-event wrapper just needs to\n * get out of the way so the chip isn't double-padded/double-boxed. */\n.rbc-radix-scope .rbc-month-view .rbc-event {\n padding: 0;\n background: none;\n box-shadow: none;\n}\n.rbc-radix-scope .rbc-event:focus {\n outline: 2px solid var(--accent-8);\n outline-offset: 1px;\n}\n.rbc-radix-scope .rbc-event-label {\n display: none; /* time is redundant with our custom event content */\n}\n.rbc-radix-scope .rbc-selected-cell {\n background-color: var(--accent-3);\n}\n\n/* ── Narrow container — the desktop row-height (~96px/hour, sized for a\n * 3-line week-view event card) and toolbar/header padding are too generous\n * once the calendar itself renders under ~480px wide (e.g. narrow mobile,\n * or the stacked-sidebar layout in CalendarMergedView). Scale both down so\n * the grid doesn't force excessive scrolling or crowd the toolbar. */\n@container (max-width: 480px) {\n .rbc-radix-scope .calendar-toolbar {\n padding: var(--space-3) var(--space-3) var(--space-2);\n }\n .rbc-radix-scope .rbc-header {\n padding: var(--space-2) 0;\n }\n .rbc-radix-scope .rbc-timeslot-group {\n min-height: var(--space-8);\n }\n /* At the smaller row height above, even a 60min+ event card no longer has\n * room for 3 stacked lines — drop to title-only regardless of duration.\n * (.rbc-event already clips overflow as a backstop; this avoids relying\n * on that and keeps text from ever getting cut off in the first place.) */\n .rbc-radix-scope .rbc-time-view .rbc-event > div > *:not(:first-child) {\n display: none;\n }\n}\n","/*\n * ─────────────────────────────────────────────\n * Brand Token Overrides for Radix Themes\n * accentColor : #FFC936 (golden yellow)\n * grayColor : #8C8C8C (neutral gray)\n *\n * Step 9 is always exactly your brand hex.\n * Steps 1–8 → progressively lighter tints.\n * Steps 10–12 → progressively darker shades.\n *\n * Step usage:\n * 1 — App background\n * 2 — Subtle background\n * 3 — UI element background\n * 4 — Hovered UI element background\n * 5 — Active / selected background\n * 6 — Subtle border and separator\n * 7 — UI element border and focus ring\n * 8 — Hovered border\n * 9 — Solid background ◄── YOUR BRAND HEX GOES HERE\n * 10 — Hovered solid background\n * 11 — Low-contrast text\n * 12 — High-contrast text\n *\n * Import this file AFTER @radix-ui/themes/styles.css\n * so these values override the defaults.\n * ─────────────────────────────────────────────\n */\n\n.radix-themes {\n\n /* Accent scale — #FFC936 anchored at step 9 */\n /*\n * 1 — App background\n * 2 — Subtle background\n * 3 — UI element background\n * 4 — Hovered UI element background\n * 5 — Active / selected background\n * 6 — Subtle border and separator\n * 7 — UI element border and focus ring\n * 8 — Hovered border\n * 9 — Solid background ◄── YOUR BRAND HEX GOES HERE\n * 10 — Hovered solid background\n * 11 — Low-contrast text\n * 12 — High-contrast text\n */\n --accent-1: #fffef5;\n --accent-2: #fffce8;\n --accent-3: #fff8cc;\n --accent-4: #fff2a8;\n --accent-5: #ffe980;\n --accent-6: #ffd94d;\n --accent-7: #ffd236;\n --accent-8: #ffca20;\n --accent-9: #FFC936; /* ← exact brand accent */\n --accent-10: #f0b800; /* hover state */\n --accent-11: #7a5c00; /* accessible text on light bg */\n --accent-12: #3d2e00; /* high-contrast text */\n\n /* Alpha variants for accent */\n --accent-a1: #c0800004;\n --accent-a2: #ffc30015;\n --accent-a3: #ffcf003f;\n --accent-a4: #ffc90062;\n --accent-a5: #ffc20084;\n --accent-a6: #f6ae0089;\n --accent-a7: #d6960094;\n --accent-a8: #c78f00bf;\n --accent-a9: #ffc600e0;\n --accent-a10: #f9b700d1;\n --accent-a11: #997000;\n --accent-a12: #2a1e00df;\n --accent-surface: #fff9e5cc;\n --accent-indicator: #ffcd1f;\n --accent-track: #ffcd1f;\n\n /* Text ON accent-9 background — black for maximum contrast on yellow */\n --accent-contrast: #000000;\n\n /* Text ON semantic solid backgrounds (error-9, success-9, info-9, warning-9) */\n --error-contrast: #ffffff;\n --success-contrast: #ffffff;\n --info-contrast: #ffffff;\n --warning-contrast: #000000;\n\n /* Gray scale — #8C8C8C anchored at step 9 */\n --gray-1: #fafafa;\n --gray-2: #f4f4f4;\n --gray-3: #ebebeb;\n --gray-4: #e0e0e0;\n --gray-5: #d1d1d1;\n --gray-6: #bebebe;\n --gray-7: #a8a8a8;\n --gray-8: #989898;\n --gray-9: #8C8C8C; /* ← exact brand gray */\n --gray-10: #6e6e6e;\n --gray-11: #4a4a4a;\n --gray-12: #1a1a1a;\n\n --gray-a1: #00000003;\n --gray-a2: #00000006;\n --gray-a3: #00000010;\n --gray-a4: #00000017;\n --gray-a5: #0000001f;\n --gray-a6: #00000026;\n --gray-a7: #00000031;\n --gray-a8: #00000044;\n --gray-a9: #00000072;\n --gray-a10: #0000007c;\n --gray-a11: #0000009b;\n --gray-a12: #000000df;\n --gray-contrast: #FFFFFF;\n --gray-surface: #ffffffcc;\n --gray-indicator: #8d8d8d;\n --gray-track: #8d8d8d;\n\n /* Semantic aliases — consumed by Radix components internally */\n --color-background: var(--accent-1);\n --color-surface: #ffffff;\n --color-panel-solid: #ffffff;\n --color-panel-translucent: rgba(255, 255, 255, 0.85);\n\n /* Component-friendly aliases */\n --primary-1: var(--accent-1);\n --primary-2: var(--accent-2);\n --primary-3: var(--accent-3);\n --primary-4: var(--accent-4);\n --primary-5: var(--accent-5);\n --primary-6: var(--accent-6);\n --primary-7: var(--accent-7);\n --primary-8: var(--accent-8);\n --primary-9: var(--accent-9);\n --primary-10: var(--accent-10);\n --primary-11: var(--accent-11);\n --primary-12: var(--accent-12);\n\n --neutral-1: var(--gray-1);\n --neutral-2: var(--gray-2);\n --neutral-3: var(--gray-3);\n --neutral-4: var(--gray-4);\n --neutral-5: var(--gray-5);\n --neutral-6: var(--gray-6);\n --neutral-7: var(--gray-7);\n --neutral-8: var(--gray-8);\n --neutral-9: var(--gray-9);\n --neutral-10: var(--gray-10);\n --neutral-11: var(--gray-11);\n --neutral-12: var(--gray-12);\n\n /* Semantic scales → fixed Radix color scales */\n --error-1: var(--red-1);\n --error-2: var(--red-2);\n --error-3: var(--red-3);\n --error-4: var(--red-4);\n --error-5: var(--red-5);\n --error-6: var(--red-6);\n --error-7: var(--red-7);\n --error-8: var(--red-8);\n --error-9: var(--red-9);\n --error-10: var(--red-10);\n --error-11: var(--red-11);\n --error-12: var(--red-12);\n\n --success-1: var(--green-1);\n --success-2: var(--green-2);\n --success-3: var(--green-3);\n --success-4: var(--green-4);\n --success-5: var(--green-5);\n --success-6: var(--green-6);\n --success-7: var(--green-7);\n --success-8: var(--green-8);\n --success-9: var(--green-9);\n --success-10: var(--green-10);\n --success-11: var(--green-11);\n --success-12: var(--green-12);\n\n --warning-1: var(--amber-1);\n --warning-2: var(--amber-2);\n --warning-3: var(--amber-3);\n --warning-4: var(--amber-4);\n --warning-5: var(--amber-5);\n --warning-6: var(--amber-6);\n --warning-7: var(--amber-7);\n --warning-8: var(--amber-8);\n --warning-9: var(--amber-9);\n --warning-10: var(--amber-10);\n --warning-11: var(--amber-11);\n --warning-12: var(--amber-12);\n\n --info-1: var(--blue-1);\n --info-2: var(--blue-2);\n --info-3: var(--blue-3);\n --info-4: var(--blue-4);\n --info-5: var(--blue-5);\n --info-6: var(--blue-6);\n --info-7: var(--blue-7);\n --info-8: var(--blue-8);\n --info-9: var(--blue-9);\n --info-10: var(--blue-10);\n --info-11: var(--blue-11);\n --info-12: var(--blue-12);\n\n /* Foreground / text tokens */\n --color-foreground: #111111;\n --color-on-primary: var(--accent-contrast);\n --color-muted: var(--neutral-7);\n --color-border: var(--neutral-4);\n\n /* Map project semantic variables to Radix tokens so utility classes (e.g. .text-text)\n resolve to theme-aware colors when inside .radix-themes */\n --text: var(--color-foreground);\n --text-secondary: var(--color-muted);\n --text-muted: var(--color-muted);\n --text-input: var(--color-foreground);\n --bg-skeleton: var(--neutral-4);\n}\n\n/* Enforce utility text classes to use Radix semantic tokens when inside the theme container.\n This ensures components that rely on `.text-text` / `.text-textMuted` pick up\n theme-aware colors. */\n.radix-themes .text-text{ color: color-mix(in srgb, var(--color-foreground) var(--un-text-opacity), transparent) !important; }\n.radix-themes .text-textSecondary{ color: color-mix(in srgb, var(--color-muted) var(--un-text-opacity), transparent) !important; }\n.radix-themes .text-textMuted{ color: color-mix(in srgb, var(--color-muted) var(--un-text-opacity), transparent) !important; }\n.radix-themes .text-textInput{ color: color-mix(in srgb, var(--color-foreground) var(--un-text-opacity), transparent) !important; }\n"],"mappings":"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","names":[]}