diff --git a/.claude/skills/gc-component/SKILL.md b/.claude/skills/gc-component/SKILL.md deleted file mode 100644 index 8d674151..00000000 --- a/.claude/skills/gc-component/SKILL.md +++ /dev/null @@ -1,250 +0,0 @@ ---- -name: gc-component -description: Scaffold a new game-components Web Component (vanilla HTML5, Shadow DOM, no libraries) under `game-components/`. Triggers when the user asks to add/create/scaffold a `gc-*` component or a fantasy game UI element. Wires up the .ts file, SCSS partial, style index, src/index.ts export, plus the inventory and the published `examples/public/game-components/SKILL.md` downstream contract. ---- - -# gc-component - -Scaffold a single game-components Web Component matching the project's vanilla + fantasy-theme conventions. - -> **CSS rule (load-bearing):** All component CSS MUST live in `.scss` files under `game-components/style/components/`. The `.ts` file never contains a ` - - ) -} - -export default ToolcaseIconsDemo diff --git a/examples/src/react-components/TooltipDemo.tsx b/examples/src/react-components/TooltipDemo.tsx deleted file mode 100644 index a969a4ac..00000000 --- a/examples/src/react-components/TooltipDemo.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react' -import { - RichPageHeader, - RichPageHeaderChip, - SectionCard, - Tooltip -} from '@toolcase/react-components' - -const TooltipDemo: React.FC = () => ( -
- Selected: {selected.join(', ') || '—'} -
-sidebarPanelComponent in DashboardLayout.>}
- />
- {content.description}
-The hidden text "Skip to main content" exists in the DOM above this paragraph—inspect to verify.
-{lede}
} -{caption}
} -{e.sceneFile},
})),
},
+ {
+ key: 'web-components',
+ basePath: '/web-components',
+ indexLabel: 'All Web Components',
+ page: {description}
+
+ This is the first item's content. It starts expanded because
+ of the open attribute.
+
+ This is the second item's content. Opening this will close + the first one. +
+ {/* @ts-ignore */} +This is the third item's content.
+ {/* @ts-ignore */} ++ Flush accordions remove outer borders and rounded corners. +
+ {/* @ts-ignore */} +Each item still collapses individually.
+ {/* @ts-ignore */} ++ This panel can stay open while others are also opened. +
+ {/* @ts-ignore */} ++ Both items start expanded and opening/closing one doesn't + affect the other. +
+ {/* @ts-ignore */} +This one starts collapsed.
+ {/* @ts-ignore */} ++ Open the browser console to see tc-action-click events. +
+ {/* @ts-ignore */} ++ Open the browser console to see tc-action-click events. +
+ {/* @ts-ignore */} ++ Hover a point — last: {hover ?? 'none'} +
+{title}
++ A full-bleed backdrop surface for staging artwork, previews, or hero content. +
+ > +) + +const ArtboardBackdropDemo: React.FC = () => ( +
+ Toggle Advanced and switch the build-tag chips — events
+ are logged in the card title above (tc-menu-click,{' '}
+ tc-advanced-toggle,{' '}
+ tc-build-tag-change).
+
+ {dismissed + ? 'Banner dismissed — tc-dismiss fired (check console).' + : 'Click × to dismiss. The tc-dismiss event is logged to the console.'} +
+ {/* @ts-ignore */} +
+ Closing this banner writes "dismissed" to{' '}
+ localStorage["tc-demo-banner"]. It stays hidden on
+ reload. Clear the key in DevTools to see it again.
+
+ Last clicked bar: {clicked ?? 'none'} +
++ Interactive — last clicked bar:{' '} + {clicked ?? 'none'} +
+v2.4
+
+
+ Last tc-generate: {lastOutput}
+
+ {v.description} +
+ ++ The page behind this panel is blurred by the overlay. +
+ ++ Last tc-click → id: {lastClicked} +
+ )} +
+ tc-menu-select fired with key:{' '}
+ {menuKey}
+
+ Some quick example text to build on the card title and + make up the bulk of the card's content. +
+ + Go somewhere + + {/* @ts-ignore */} +
+ A card with an image at the top. The image uses{' '}
+ .card-img-top and rounds the upper corners.
+
+ A card with an image at the bottom. The image uses{' '}
+ .card-img-bottom and rounds the lower
+ corners.
+
+ With supporting text below as a natural lead-in to + additional content. +
+ + Go somewhere + + + + Last updated 3 mins ago + + + {/* @ts-ignore */} +
+ A {v} card using the{' '}
+ variant attribute.
+
+ Open the browser console to see tc-change events. +
+{summary}
+ {selected}
+ {confirmed}
+ {activeChannel}
+ tc-send → {lastSend}
+ | Identifier | +Status | +Amount | +
|---|---|---|
|
+ {/* @ts-ignore */}
+ |
+ Paid | +$49.00 | +
|
+ {/* @ts-ignore */}
+ |
+ Pending | +$199.00 | +
|
+ {/* @ts-ignore */}
+ |
+ Overdue | +$9.00 | +
+ tc-copy fired. First 40 chars:{' '}
+ {lastCopied}
+
{selected}
+ open{' '}
+ attribute is present.
+
+ Options are set via the options JS property. Click
+ the trigger to open; type to filter (matches label,{' '}
+ value, and keywords); press Enter to
+ pick the first match; Escape closes.
+
+ Selected: {selected} +
+ )} +
+ Pass a value attribute to set an initial selection;
+ the trigger shows that option's label and the matching row is
+ highlighted in the list.
+
+ Current value: {tz} +
+
+ The boolean disabled attribute dims the trigger and
+ prevents the dropdown from opening.
+
+ A combo of 1 renders nothing — there is no card
+ below.
+
+ Type to filter, ↑/↓ to navigate, ↵ to select, Esc or backdrop + click to close. +
+ + {/* @ts-ignore */} +{lastResult}
+ {v.description}
+ + {/* @ts-ignore */} ++ Right-click (or long-press on touch) to open the context menu. + Keyboard: Arrow keys to navigate, Enter/Space to select, Escape + to close. +
+ {/* @ts-ignore */} ++ The Share item has a nested submenu. Hover or press ArrowRight + to open it. +
+ {/* @ts-ignore */} ++ Last rebind requested:{' '} + {lastRebound ?? '— none yet —'} +
++ The spinner is centred over the label and sized to the text. The + label is hidden (not removed), so the button keeps its resting + width and stays non-interactive. +
++ Click to start a 1.6s task. Watch the button: it does not resize + or shift when the spinner appears or disappears. +
++ With a leading addon the spinner replaces the icon glyph; with a + trailing addon it overlays the label and the addon glyph stays + put. +
++ Addon glyphs are sized to the label and vertically centred + against it, with a consistent gap and a 1px divider. +
++ Slotted addon content is centred and aligned to the label too — + here a mono version tag and a glyph that inherits the label + sizing. +
+
+ With sticky, the nav is{' '}
+ position: sticky; top: 0. The scrolled (condensed +
+ shadow) state is applied via classList.add in the
+ effect for preview.
+
tc-expire event fired — timer has expired.
+ + Selected: {selected ?? '— none yet —'} + {' · '} + Last crafted: {crafted ?? '— none yet —'} +
+crit (larger, danger red) ·{' '}
+ heal (green, + prefix) ·{' '}
+ miss (muted uppercase).
+ tc-done fired {doneCount}× — the number
+ finished its animation.
+
+ ) : (
+
+ Waiting for tc-done (fires after 2 s)…
+
+ )}
+ --bs-dashboard-content-padding.
+ + Resize below 992px: the sidebar becomes a slide-in + drawer. Use the toggle, Ctrl+B, Esc, or tap the + backdrop to close it. +
+ {lastEvent && ( +{line}
+ {line}
+ + Advanced {advanceCount} time{advanceCount === 1 ? '' : 's'}{' '} + (click the box after it finishes typing). +
++ Last choice: {lastChoice} +
+