@duskmoon-dev/core 1.2.0 → 1.3.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/dist/index.css CHANGED
@@ -2250,6 +2250,7 @@ html {
2250
2250
  font-size: 0.875rem;
2251
2251
  }
2252
2252
 
2253
+ /* List-based breadcrumbs (legacy) */
2253
2254
  .breadcrumbs li {
2254
2255
  display: flex;
2255
2256
  align-items: center;
@@ -2280,6 +2281,198 @@ html {
2280
2281
  color: var(--color-on-surface-variant);
2281
2282
  }
2282
2283
 
2284
+ /* Span-based breadcrumbs */
2285
+ .breadcrumb-item {
2286
+ display: inline-flex;
2287
+ align-items: center;
2288
+ gap: 0.375rem;
2289
+ color: var(--color-on-surface-variant);
2290
+ text-decoration: none;
2291
+ transition: color 150ms ease-in-out;
2292
+ }
2293
+
2294
+ .breadcrumb-item:hover {
2295
+ color: var(--color-on-surface);
2296
+ }
2297
+
2298
+ .breadcrumb-item-active {
2299
+ color: var(--color-on-surface);
2300
+ font-weight: 500;
2301
+ pointer-events: none;
2302
+ }
2303
+
2304
+ .breadcrumb-link {
2305
+ display: inline-flex;
2306
+ align-items: center;
2307
+ gap: 0.375rem;
2308
+ color: var(--color-on-surface-variant);
2309
+ text-decoration: none;
2310
+ transition: color 150ms ease-in-out;
2311
+ cursor: pointer;
2312
+ }
2313
+
2314
+ .breadcrumb-link:hover {
2315
+ color: var(--color-primary);
2316
+ text-decoration: underline;
2317
+ }
2318
+
2319
+ .breadcrumb-link:focus-visible {
2320
+ outline: 2px solid var(--color-primary);
2321
+ outline-offset: 2px;
2322
+ border-radius: 0.25rem;
2323
+ }
2324
+
2325
+ /* Separator - Default shows "/" */
2326
+ .breadcrumb-separator {
2327
+ display: inline-flex;
2328
+ align-items: center;
2329
+ color: var(--color-on-surface-variant);
2330
+ font-size: 0.875rem;
2331
+ user-select: none;
2332
+ opacity: 0.6;
2333
+ }
2334
+
2335
+ .breadcrumb-separator::before {
2336
+ content: "/";
2337
+ }
2338
+
2339
+ /* Separator Variants */
2340
+ .breadcrumbs-slash .breadcrumb-separator::before {
2341
+ content: "/";
2342
+ }
2343
+
2344
+ .breadcrumbs-chevron .breadcrumb-separator::before {
2345
+ content: "›";
2346
+ font-size: 1.125rem;
2347
+ }
2348
+
2349
+ .breadcrumbs-dot .breadcrumb-separator::before {
2350
+ content: "•";
2351
+ }
2352
+
2353
+ .breadcrumbs-arrow .breadcrumb-separator::before {
2354
+ content: "→";
2355
+ }
2356
+
2357
+ .breadcrumbs-pipe .breadcrumb-separator::before {
2358
+ content: "|";
2359
+ }
2360
+
2361
+ /* Breadcrumb Icon */
2362
+ .breadcrumb-icon {
2363
+ display: inline-flex;
2364
+ align-items: center;
2365
+ justify-content: center;
2366
+ width: 1rem;
2367
+ height: 1rem;
2368
+ flex-shrink: 0;
2369
+ }
2370
+
2371
+ .breadcrumb-icon svg {
2372
+ width: 100%;
2373
+ height: 100%;
2374
+ }
2375
+
2376
+ /* Home Icon Link */
2377
+ .breadcrumb-home {
2378
+ display: inline-flex;
2379
+ align-items: center;
2380
+ justify-content: center;
2381
+ color: var(--color-on-surface-variant);
2382
+ text-decoration: none;
2383
+ transition: color 150ms ease-in-out;
2384
+ }
2385
+
2386
+ .breadcrumb-home:hover {
2387
+ color: var(--color-primary);
2388
+ }
2389
+
2390
+ .breadcrumb-home-icon {
2391
+ width: 1.125rem;
2392
+ height: 1.125rem;
2393
+ }
2394
+
2395
+ /* Collapsed Breadcrumbs (with ellipsis) */
2396
+ .breadcrumb-ellipsis {
2397
+ display: inline-flex;
2398
+ align-items: center;
2399
+ justify-content: center;
2400
+ padding: 0.25rem 0.5rem;
2401
+ color: var(--color-on-surface-variant);
2402
+ background-color: transparent;
2403
+ border: none;
2404
+ border-radius: 0.25rem;
2405
+ cursor: pointer;
2406
+ transition: background-color 150ms ease-in-out;
2407
+ }
2408
+
2409
+ .breadcrumb-ellipsis::before {
2410
+ content: "...";
2411
+ }
2412
+
2413
+ .breadcrumb-ellipsis:hover {
2414
+ background-color: color-mix(in oklch, var(--color-on-surface) 8%, transparent);
2415
+ }
2416
+
2417
+ /* Color Variants */
2418
+ .breadcrumbs-primary .breadcrumb-link:hover,
2419
+ .breadcrumbs-primary .breadcrumb-item-active {
2420
+ color: var(--color-primary);
2421
+ }
2422
+
2423
+ .breadcrumbs-secondary .breadcrumb-link:hover,
2424
+ .breadcrumbs-secondary .breadcrumb-item-active {
2425
+ color: var(--color-secondary);
2426
+ }
2427
+
2428
+ .breadcrumbs-tertiary .breadcrumb-link:hover,
2429
+ .breadcrumbs-tertiary .breadcrumb-item-active {
2430
+ color: var(--color-tertiary);
2431
+ }
2432
+
2433
+ /* Size Variants */
2434
+ .breadcrumbs-sm {
2435
+ font-size: 0.75rem;
2436
+ gap: 0.375rem;
2437
+ }
2438
+
2439
+ .breadcrumbs-sm .breadcrumb-icon,
2440
+ .breadcrumbs-sm .breadcrumb-home-icon {
2441
+ width: 0.875rem;
2442
+ height: 0.875rem;
2443
+ }
2444
+
2445
+ .breadcrumbs-lg {
2446
+ font-size: 1rem;
2447
+ gap: 0.625rem;
2448
+ }
2449
+
2450
+ .breadcrumbs-lg .breadcrumb-icon,
2451
+ .breadcrumbs-lg .breadcrumb-home-icon {
2452
+ width: 1.25rem;
2453
+ height: 1.25rem;
2454
+ }
2455
+
2456
+ /* Contained Variant (with background) */
2457
+ .breadcrumbs-contained {
2458
+ padding: 0.75rem 1rem;
2459
+ background-color: var(--color-surface-container);
2460
+ border-radius: 0.5rem;
2461
+ }
2462
+
2463
+ /* No Wrap Variant */
2464
+ .breadcrumbs-nowrap {
2465
+ flex-wrap: nowrap;
2466
+ overflow-x: auto;
2467
+ }
2468
+
2469
+ /* Disabled Breadcrumb Item */
2470
+ .breadcrumb-item-disabled {
2471
+ opacity: 0.38;
2472
+ pointer-events: none;
2473
+ cursor: not-allowed;
2474
+ }
2475
+
2283
2476
  /* Tabs */
2284
2477
  .tabs {
2285
2478
  display: flex;
@@ -12741,18 +12934,93 @@ html {
12741
12934
  @layer components {
12742
12935
  /* Base Collapse */
12743
12936
  .collapse {
12937
+ display: flex;
12938
+ flex-direction: column;
12939
+ border-radius: 0.5rem;
12940
+ background-color: var(--color-surface);
12941
+ /* Override Tailwind's visibility: collapse utility */
12942
+ visibility: visible !important;
12943
+ }
12944
+
12945
+ /* Collapse Trigger */
12946
+ .collapse-trigger {
12947
+ display: flex;
12948
+ align-items: center;
12949
+ justify-content: space-between;
12950
+ width: 100%;
12951
+ padding: 0.75rem 1rem;
12952
+ font-size: 1rem;
12953
+ font-weight: 500;
12954
+ color: var(--color-on-surface);
12955
+ background-color: transparent;
12956
+ border: none;
12957
+ cursor: pointer;
12958
+ transition: background-color 150ms ease-in-out;
12959
+ text-align: left;
12960
+ }
12961
+
12962
+ .collapse-trigger:hover {
12963
+ background-color: var(--color-surface-container);
12964
+ }
12965
+
12966
+ .collapse-trigger:focus-visible {
12967
+ outline: 2px solid var(--color-primary);
12968
+ outline-offset: -2px;
12969
+ }
12970
+
12971
+ /* Collapse Icon */
12972
+ .collapse-icon {
12973
+ display: flex;
12974
+ align-items: center;
12975
+ justify-content: center;
12976
+ width: 1.5rem;
12977
+ height: 1.5rem;
12978
+ transition: transform 300ms ease-in-out;
12979
+ flex-shrink: 0;
12980
+ }
12981
+
12982
+ /* Collapse Content - hidden by default */
12983
+ .collapse-content {
12744
12984
  display: grid;
12745
12985
  grid-template-rows: 0fr;
12746
12986
  transition: grid-template-rows 300ms ease-in-out;
12987
+ overflow: hidden;
12747
12988
  }
12748
12989
 
12749
- .collapse.show {
12990
+ .collapse-content > * {
12991
+ overflow: hidden;
12992
+ padding: 0 1rem;
12993
+ }
12994
+
12995
+ /* Open State */
12996
+ .collapse-open .collapse-content {
12750
12997
  grid-template-rows: 1fr;
12751
12998
  }
12752
12999
 
12753
- /* Collapse Content */
12754
- .collapse-content {
12755
- overflow: hidden;
13000
+ .collapse-open .collapse-content > * {
13001
+ padding: 0 1rem 1rem;
13002
+ }
13003
+
13004
+ .collapse-open .collapse-icon {
13005
+ transform: rotate(180deg);
13006
+ }
13007
+
13008
+ /* Closed State (explicit) */
13009
+ .collapse-closed .collapse-content {
13010
+ grid-template-rows: 0fr;
13011
+ }
13012
+
13013
+ /* Legacy show class for backwards compatibility */
13014
+ .collapse.show .collapse-content {
13015
+ grid-template-rows: 1fr;
13016
+ }
13017
+
13018
+ .collapse.show .collapse-content > * {
13019
+ padding: 0 1rem 1rem;
13020
+ }
13021
+
13022
+ .collapse.show .collapse-icon {
13023
+ transform: rotate(180deg);
12756
13024
  }
12757
13025
 
12758
13026
  /* Collapse Inner (for padding) */
@@ -12816,9 +13084,11 @@ html {
12816
13084
  border: 1px solid var(--color-outline-variant);
12817
13085
  border-radius: 0.75rem;
12818
13086
  overflow: hidden;
13087
+ box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);
12819
13088
  }
12820
13089
 
12821
- .collapse-card .collapse-toggle {
13090
+ .collapse-card .collapse-toggle,
13091
+ .collapse-card .collapse-trigger {
12822
13092
  width: 100%;
12823
13093
  justify-content: space-between;
12824
13094
  padding: 1rem;
@@ -12826,15 +13096,132 @@ html {
12826
13096
  color: var(--color-on-surface);
12827
13097
  }
12828
13098
 
12829
- .collapse-card .collapse-toggle:hover {
13099
+ .collapse-card .collapse-toggle:hover,
13100
+ .collapse-card .collapse-trigger:hover {
12830
13101
  background-color: var(--color-surface-container);
12831
13102
  }
12832
13103
 
12833
- .collapse-card .collapse-inner {
13104
+ .collapse-card .collapse-inner,
13105
+ .collapse-card .collapse-content > * {
12834
13106
  padding: 0 1rem 1rem;
12835
13107
  color: var(--color-on-surface-variant);
12836
13108
  }
12837
13109
 
13110
+ /* Bordered Variant */
13111
+ .collapse-bordered {
13112
+ border: 1px solid var(--color-outline-variant);
13113
+ border-radius: 0.5rem;
13114
+ }
13115
+
13116
+ /* Ghost Variant */
13117
+ .collapse-ghost {
13118
+ background-color: transparent;
13119
+ }
13120
+
13121
+ .collapse-ghost .collapse-trigger:hover {
13122
+ background-color: color-mix(in oklch, var(--color-on-surface) 5%, transparent);
13123
+ }
13124
+
13125
+ /* Color Variants */
13126
+ .collapse-primary .collapse-trigger {
13127
+ color: var(--color-primary);
13128
+ }
13129
+
13130
+ .collapse-primary .collapse-trigger:hover {
13131
+ background-color: var(--color-primary-container);
13132
+ }
13133
+
13134
+ .collapse-secondary .collapse-trigger {
13135
+ color: var(--color-secondary);
13136
+ }
13137
+
13138
+ .collapse-secondary .collapse-trigger:hover {
13139
+ background-color: var(--color-secondary-container);
13140
+ }
13141
+
13142
+ .collapse-tertiary .collapse-trigger {
13143
+ color: var(--color-tertiary);
13144
+ }
13145
+
13146
+ .collapse-tertiary .collapse-trigger:hover {
13147
+ background-color: var(--color-tertiary-container);
13148
+ }
13149
+
13150
+ /* Size Variants */
13151
+ .collapse-sm .collapse-trigger {
13152
+ padding: 0.5rem 0.75rem;
13153
+ font-size: 0.875rem;
13154
+ }
13155
+
13156
+ .collapse-sm .collapse-content > * {
13157
+ padding: 0 0.75rem;
13158
+ }
13159
+
13160
+ .collapse-sm.collapse-open .collapse-content > * {
13161
+ padding: 0 0.75rem 0.75rem;
13162
+ }
13163
+
13164
+ .collapse-lg .collapse-trigger {
13165
+ padding: 1rem 1.25rem;
13166
+ font-size: 1.125rem;
13167
+ }
13168
+
13169
+ .collapse-lg .collapse-content > * {
13170
+ padding: 0 1.25rem;
13171
+ }
13172
+
13173
+ .collapse-lg.collapse-open .collapse-content > * {
13174
+ padding: 0 1.25rem 1.25rem;
13175
+ }
13176
+
13177
+ /* Divider Variant */
13178
+ .collapse-divider .collapse-trigger {
13179
+ border-bottom: 1px solid var(--color-outline-variant);
13180
+ }
13181
+
13182
+ .collapse-divider.collapse-open .collapse-trigger {
13183
+ border-bottom-color: var(--color-outline-variant);
13184
+ }
13185
+
13186
+ /* Disabled State */
13187
+ .collapse-disabled {
13188
+ opacity: 0.5;
13189
+ pointer-events: none;
13190
+ }
13191
+
13192
+ .collapse-disabled .collapse-trigger {
13193
+ cursor: not-allowed;
13194
+ }
13195
+
13196
+ /* Loading State */
13197
+ .collapse-loading .collapse-trigger::after {
13198
+ content: '';
13199
+ display: inline-block;
13200
+ width: 1rem;
13201
+ height: 1rem;
13202
+ margin-left: 0.5rem;
13203
+ border: 2px solid var(--color-outline);
13204
+ border-top-color: var(--color-primary);
13205
+ border-radius: 50%;
13206
+ animation: collapse-spin 0.8s linear infinite;
13207
+ }
13208
+
13209
+ @keyframes collapse-spin {
13210
+ to { transform: rotate(360deg); }
13211
+ }
13212
+
13213
+ /* Slide Animation */
13214
+ .collapse-slide .collapse-content > * {
13215
+ transform: translateY(-0.5rem);
13216
+ opacity: 0;
13217
+ transition: transform 300ms ease-in-out, opacity 200ms ease-in-out;
13218
+ }
13219
+
13220
+ .collapse-slide.collapse-open .collapse-content > * {
13221
+ transform: translateY(0);
13222
+ opacity: 1;
13223
+ }
13224
+
12838
13225
  /* Horizontal Collapse */
12839
13226
  .collapse-horizontal {
12840
13227
  display: grid;
@@ -12977,14 +13364,20 @@ html {
12977
13364
  /* Reduce Motion */
12978
13365
  @media (prefers-reduced-motion: reduce) {
12979
13366
  .collapse,
13367
+ .collapse-content,
13368
+ .collapse-icon,
12980
13369
  .collapse-fade,
12981
13370
  .collapse-horizontal,
12982
13371
  .collapse-horizontal-fixed,
12983
13372
  .collapse-toggle-icon,
12984
13373
  .collapse-maxheight,
12985
- .collapse-animating {
13374
+ .collapse-animating,
13375
+ .collapse-slide .collapse-content > * {
12986
13376
  transition: none;
12987
13377
  }
13378
+ .collapse-loading .collapse-trigger::after {
13379
+ animation: none;
13380
+ }
12988
13381
  }
12989
13382
  }
12990
13383
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duskmoon-dev/core",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "DuskMoonUI - Tailwind CSS v4 plugin with Material Design 3 color system and component styles",
5
5
  "type": "module",
6
6
  "main": "./dist/index.css",